【18】python之文件操作

文件操作流程

  1. 打开文件,得到文件句柄并赋值给一个变量
  2. 通过句柄对文件进行操作
  3. 关闭文件 

打开文件的模式有:

  • 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 #文件读写
 2 #文件写入
 3 f = open("test.txt","a",encoding="utf-8")#文件句柄,内存对象
 4 #data2=f.read()#按行读取,data2从最后一行读起
 5 f.write("\n我爱北京天安门")
 6 f.close()
 7 #文件全部读取
 8 g = open("test.txt","r",encoding="utf-8")#文件句柄,内存对象
 9 data1=g.read()
10 print(data1)
11 g.close()
12 #文件读取前五行
13 a = open("test.txt","r",encoding="utf-8")#文件句柄,内存对象
14 for i in range(5):
15     print(a.readline().strip())
16 a.close()
17 #文件不读取第十行
18 b = open("test.txt","r",encoding="utf-8")#文件句柄,内存对象
19 for index,j in enumerate(b.readlines()):
20     if index==9:
21         print("------------")
22     else:
23         print(j.strip())
24 b.close()
25 #文件不读取第十行
26 count = 0
27 f = open("test.txt","r",encoding="utf-8")#文件句柄,内存对象
28 #迭代器
29 for m in f:
30     if count==9:
31         print("------------")
32         count=count+1
33     else:
34         print(m.strip())
35         count = count + 1
36 b.close()
37 #光标
38 c = open("test.txt","r",encoding="utf-8")#文件句柄,内存对象
39 print(c.tell())
40 print(c.readline())
41 print(c.readline())
42 print(c.readline())
43 print(c.tell())#安字符计数
44 c.seek(10)#光标回到某个位置
45 print(c.tell())#安字符计数
46 print(c.encoding)#打印文件编码
47 print(c.flush())#强制刷新,将读取文件放到硬盘上
48 print(c.buffer)#缓存区
49 #c.truncate#清空
50 c.close()

 

with语句

为了避免打开文件后忘记关闭,可以通过管理上下文,即:

 1 with open('log','r') as f: 

如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。

在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:

 1 with open('log1') as obj1, open('log2') as obj2: 

 

文件修改

1 f = open("test1","r",encoding="utf-8")
2 f1 = open("test1.bak","w",encoding="utf-8")
3 
4 for line in f:
5     if "等我享受" in line:
6         line=line.replace("等我享受","等me享受")
7     f1.write(line)
8 f.close()
9 f1.close()
 1 import sys
 2 
 3 with open("test1","r",encoding="utf-8") as f,\
 4     open("test1.bak","w",encoding="utf-8") as f1:
 5     for line in f:
 6         find_str = sys.argv[1]
 7         replace_str = sys.argv[2]
 8         if find_str in line:
 9             line = line.replace(find_str, replace_str)
10         f1.write(line)

 

posted @ 2018-05-08 18:10  才华充电中  阅读(140)  评论(0编辑  收藏  举报