文件操作
对文件操作流程
- 打开文件,得到文件句柄并赋值给一个变量
- 通过句柄对文件进行操作
- 关闭文件
打开文件的模式有:
- r,只读模式(默认)。
- w,只写模式。【不可读;不存在则创建;存在则删除内容;】
- a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
- r+,可读写文件。【可读;可写;可追加】
- w+,写读
- a+,同a
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
- rU
- r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
- rb
- wb
- ab
1 data = open("FileRead.txt",mode='r') #r-读 2 print(data.read()) 3 data.close() 4 5 data = open("FileRead1.txt", mode='w',encoding="UTF-8") #w-写 6 data.write("123\n") 7 data.write("321\n") 8 data.write("哈哈哈\n") 9 data.close() 10 11 data = open("FileRead1.txt",mode='a',encoding="UTF-8") #a-追加 12 data.write("这是追加的部分\n") 13 data.close() 14 15 data = open("FileRead1.txt",mode='r+',encoding='UTF-8') #r+ 打开一个文件用于读写。文件指针将会放在文件的开头。 16 print(data.readline()) 17 data.write("111") 18 print(data.readline()) 19 data.close() 20 21 22 23 data = open("FileRead1.txt",mode='w+',encoding='UTF-8') #w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 24 25 data = open("FileRead1.txt",mode='a+',encoding='UTF-8') #a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
文件操作:
#打印每行 第五行打印成“---------------------------”
data = open("FileRead1.txt",mode='r',encoding='UTF-8')
#第一种方法 高效
count = 0
for line in data:
if count == 5 :
count += 1
print("-----------------------------------------")
continue
print(line.strip()) #strip去掉空格
count += 1
#第二种方法
for index,line in enumerate(data.readlines()):
-#enumerate 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中
if index == 5 :
print("-----------------------------------------")
continue
print(line.strip())
'''
----------------------------------------------------------------------------------------------------------------------------------
#file.flush() 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
#file.read([size]) 从文件读取指定的字节数,如果未给定或为负则读取所有。
#file.tell() 返回文件当前光标位置。
#file.seek(offset[, whence]) 设置文件当前光标位置
文件修改内容:
文件中修改内容默认只能在文件最后添加,如果修改中间的内容,必须逐行读出来(转为字符串),然后将需要替换的内容更换(更换字符串),然后将内容写入到新文件中。
1 1 f1 = open("text1.txt",mode="r",encoding="UTF-8") 2 2 f2 = open("text2.txt",mode="w",encoding="UTF-8") 3 3 for line in f1 : 4 4 if "我" in line : 5 5 line=line.replace("我","大哥") 6 6 f2.write(line) 7 7 f1.close() 8 8 f2.close()
with语句
1 #with 为了避免打开文件后忘记关闭,可以通过管理上下文,即: 2 with open("text2.txt",mode="r",encoding="UTF-8") as f1 ,\ 3 open("text1.txt",mode="r",encoding="UTF-8") as f2 : 4 for i in f1: 5 print(i) 6 7 #如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。 8 #在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即: 9 with open("text2.txt",mode="r",encoding="UTF-8") as f1 ,\ 10 open("text1.txt",mode="r",encoding="UTF-8") as f2 :