Python中文件操作可以通过open函数,这的确很像C语言中的fopen。通过open函数获取一个file object,然后调用read(),write()等方法对文件进行读写操作。
1.open
使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。
 file_object = open('thefile.txt')
 try:
 all_the_text = file_object.read( )
 finally:
 file_object.close( )
注:不能把open语句放在try块里,因为当打开文件出现异常时,文件对象file_object无法执行close()方法。
2.读文件
读文本文件
 input = open('data', 'r')
 #第二个参数默认为r
 input = open('data')
读二进制文件
 input = open('data', 'rb')
读取所有内容
 file_object = open('thefile.txt')
 try:
 all_the_text = file_object.read( )
 finally:
 file_object.close( )
读固定字节
 file_object = open('abinfile', 'rb')
 try:
 while True:
 chunk = file_object.read(100)
 if not chunk:
 break
 do_something_with(chunk)
 finally:
 file_object.close( )
读每行
 list_of_all_the_lines = file_object.readlines( )
如果文件是文本文件,还可以直接遍历文件对象获取每行:
 for line in file_object:
 process line
3.写文件
写文本文件
 output = open('data', 'w')
写二进制文件
 output = open('data', 'wb')
追加写文件
 output = open('data', 'w+')
写数据
 file_object = open('thefile.txt', 'w')
 file_object.write(all_the_text)
 file_object.close( )
写入多行
 file_object.writelines(list_of_text_strings)
|
========================================================================
文件操作模式有三种: 'r'(read), 'w'(write) 和 'a'(append)
文件读取的三种方式: read(), readline(), readlines()
read(): 读取文件所有内容,返回一个字符串对象
readline(): 每次读取文件一行
readlines():按行读取文件所有内容,返回一个列表
f = open('test.txt')
for i in f.readlines()
print i
|