文件和输入输出
open() 函数的基本语法:
file_object = open(file_name, access_mode=’r’, buffering=-1)
可选参数 buffering
用于指示访问文件所采用的缓冲方式:0 表示不缓冲,1 表示只缓冲一行数据,大于 1 的值代表使用给定值作为缓冲区的大小。默认使用系统缓冲机制。
判断一个对象 f 是否是 file
类型:
if isinstance(f, file)
open() 成功执行并返回一个文件对象之后,所有对该文件的后续操作都将通过这个“句柄”进行。
输入
read()
方法用来直接读取字节到字符串中,最多读取给定数目个字节。如果没有给定 size 参数(默认为 -1),文件将被读取直至末尾。readline()
方法读取文件的一行,然后整行,包括行结束符,作为字符串返回readlines()
方法读取剩余所有的行,并以字符串列表的形式返回
循环读取文件 f 中的每一行直至结束:
f = open('test.txt', 'r')
for line in f:
print line
f.close()
或者
f = open('test.txt', 'r')
while True:
line = f.readline()
print line
f.close()
输出
write()
方法用来向文件写入字符串writelines()
方法同readlines()
是针对列表的操作
Notice:
- 当使用
read()
或readlines()
方法从文件中读取行时,不会删除行结束符,这个操作被留给了程序员,例如:
f = open('test.txt', 'r')
data = [line.strip() for line in f.readlines()]
f.close()
write()
或writelines()
方法也不会自动加入行结束符,需要自己在向文件写入数据前自己完成
文件内移动
seek()
方法可以在文件中移动文件指针到不同的位置。offset
字节代表相对于某个位置偏移量;whence
代表绝对定位,默认值为 0,代表从文件头算起;1 代表从当前位置算起;2 代表从文件末尾算起。
f = open('test.txt', 'r')
print f.readline()
f.seek(1, 0)
print f.readline()
以上输出结果为:
>abcdefg
>bcdefg
文件的内建属性
文件对象的属性 | 描述 |
---|---|
file.closed | True 表示文件已经被关闭 |
file.encoding | 文件所使用的编码。None 表示使用系统默认编码 |
file.mode | Access 文件打开时使用的访问模式 |
file.name | 文件名 |
待续