文章目录
1.open() 函数用于打开一个文件
创建一个 file 对象,相关的方法才可以调用它进行读写。
open(name[, mode[, buffering]])
参数说明:
name : 一个包含了你要访问的文件名称的字符串值。
mode : mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读®。
buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
注意:w、w+会覆盖已经存在的文件
2.fileObject.seek(offset[, whence]) 方法用于移动文件读取指针到指定位置
参数:
offset – 开始的偏移量,也就是代表需要移动偏移的字节数
whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
打开文件的模式有:
r ,只读模式【默认】
w,只写模式【不可读;不存在则创建;存在则清空内容;】
x, 只写模式【不可读;不存在则创建,存在则报错】
a, 追加模式【可读; 不存在则创建;存在则只追加内容;】
“+” 表示可以同时读写某个文件
r+, 读写【可读,可写,不会创建不存在的文件,从顶部开始写 会覆盖之前此位置的内容】
w+,写读【可读,可写,不存在则创建;存在则清空内容;】
x+ ,写读【可读,可写,不存在则创建,存在则报错】
a+, 写读【可读,可写,不存在则创建;存在则只追加内容;】
"b"表示以二进制的方式操作
rb 或 r+b
wb 或 w+b
xb 或 w+b
ab 或 a+b
**r+解释:**运行之前是两行五五开牛逼,运行后按顺序覆盖写入,第二行的牛逼依旧存在,并未覆盖
3.file对象常见函数
4.文件读取时常见的格式错误
原因:
读取文件中有中文
解决办法:
打开文件时以utf-8格式打开
f=open('C:/Desktop/PY/wuwukai.txt',encoding='utf-8')print(f.read(10))
``
each_line 为f中的每一行
```pythonfor each_linein f:print(each_line)
5.注意:utf-8中,一个汉字占3个字节
原文:你们可能不知道只用20万赢到578万是什么概念
f.seek(0,0)print(f.read(4))#read(4) 读了四个汉字print(f.tell())# 此时的位置为12 即‘不’字的开头
f.seek(3,0)#0123 即们字开头 如输入1或2则会报错print(f.read(4))
————————————————————下方为输出结果————————————————————
你们可能12
们可能不
6.接受输入并保存为新文件
import os.pathdeffile_write(file_name):
f=open(file_name+'.txt','w')print('请输入内容[单独树立\':w\'保存退出]:')whileTrue:
write_some=input()if write_some!=(':w'|':w'):#不区分中英
f.write('%s\n'% write_some)else:break
f.close()
file_name=input('请输入文件名:')if os.path.isfile(file_name+'.txt'):#判断是否本地是否存在同名文件print('请注意,若该文件夹中存在同名文件,请重新命名')else:
file_write(file_name)
7.txt文件比较
deffile_compare(file1,file2):
f1=open(file1,encoding='utf-8')
f2=open(file2,encoding='utf-8')
count=0#统计行数
different=[]#统计不一样的数量for line1in f1:
line2= f2.readline()
count+=1if line1!= line2:
different.append(count)
f1.close()
f2.close()return different
file1=input('请输入第一个文件名:')+'.txt'
file2=input('请输入第二个文件名:')+'.txt'#也该核查是否存在该文件while file1==file2:print('该两文件为同一文件,请重新输入第二个文件名:')
file2=input('请输入第二个文件名:')
different= file_compare(file1,file2)iflen(different)==0:print('两个文件一样')else:print('两个文件共用[%d]处不同:'%len(different))for eachin different:print('第%d行不一样'% each)