day3-文件操作

文件操作

一、文件操作流程

1. 打开文件,得到文件句柄赋值给一个变量

2. 通过文件句柄,对文件进行操作

3. 关闭文件

二、 文件操作模式

 1 基本模式:
 2 r #只读模式(默认)
 3 w #只写模式(不可读,不存在则创建新文件,存在则删除内容)
 4 a #追加模式(不可读,不存在则创建,存在则只追加内容)
 5 "+"号表示同时读写某个文件:
 6 r+,读写,读原来的文件追加
 7 w+,写读,先创建一个文件然后读写
 8 a+,追加读
 9 "U"表示在读取文件时,可以把\r\n自动转化为\n(与 r 或 r+ 模式一同使用):
10 rU
11 r+U
12 "b"表示处理二进制文件:
13 rb
14 wb
15 ab

三、文件操作

 1 f = open('test.txt','r')
 2 # 输出文件编码
 3 print(f.encoding)
 4 # 输出文件名
 5 print(f.name)
 6 # 判断是否是一个终端设备,比如打印机
 7 print(f.isatty())
 8 # 判断文件是否可读
 9 # print(f.readable())
10 # 判断文件是否可写
11 # print(f.writable())
12 # 读取5个字符
13 print(f.read(5))
14 # 获取句柄指针的位置
15 print(f.tell())
16 # 判断是否可以移动指针
17 # print(f.seekable())
18 # 设置句柄指针的位置
19 f.seek(2)
20 print(f.tell())
21 # 输出文件句柄在内存中的编号
22 print(f.fileno())
23 f.close()
24 # 判断文件是否关闭
25 print(f.closed)
26 
27 f = open('test.txt','w')
28 # 写入文件,模式为w或a
29 f.write('long long a time')
30 # 强制立刻刷新到文件(本来需要保存的东西会先放入内存,一定时间后才会写入文件)
31 f.flush()
32 f.close()
33 
34 f = open('test.txt','a')
35 # 以5为位置截断文件,模式必须为a
36 f.truncate(5)
37 f.close()

四、readline与readlines、文件迭代

 1 # 读取一行文件
 2 f = open('test.txt','r')
 3 print f.readline()
 4 f.close()
 5 
 6 >>> 
 7 1
 8 
 9 # 以列表的形式返回文件中的每一行
10 f = open('test.txt','r')
11 print f.readlines()
12 f.close()
13 
14 >>> 
15 ['1\n', '2\n', '3\n', '4\n', '5\n', '6']
16 
17 
18 # 循环读取每一行,只适合小文件
19 f = open('test.txt','r')
20 for index,line in enumerate(f.readlines()):
21     if index == 3:
22         print "-"*20
23         continue
24     print line.strip()
25 f.close()
26 
27 >>> 
28 1
29 2
30 3
31 --------------------
32 5
33 6
34 
35 # 只保存一行,读一行删一行, 内存里只存一行,效率高, 文件变为迭代器,适合大文件
36 f = open('test.txt','r')
37 count = 0
38 for line in f:
39     count += 1
40     if count == 3:
41         print "-"*20
42         continue
43     print line.strip()
44 f.close()
45 
46 >>> 
47 1
48 2
49 --------------------
50 4
51 5
52 6

五、with

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

1 with open('log1') as obj1, \
2         open('log2') as obj2:
3     pass

 

posted @ 2017-06-21 16:35  不知所以  阅读(84)  评论(0)    收藏  举报