一、open()函数
open()以及file()(open()与file()等价,可以任意替换)提供了初始化输入/输出(I/O)操作的通用接口。open()函数成功打开一个文件后就会返回一个文件对象,说白了你就可以接着读写了,否则就bug了。
语法:file_object = open(file_name, access_mode=‘r‘, buffering=-1)
第一个参数是文件名或者路径(绝对或相对路径),第二个参数叫文件打开的模式,不写时默认是‘r‘模式。‘r‘模式是只读模式、‘w‘是写模式、‘a‘是追加模式,写模式和追加模式都是写文件,区别在于,‘w‘是覆盖写,也就是每次写的时候都会把之前的内容覆盖掉,只保留最后一次的内容,而‘a‘模式是在原来的基础上接着写。这三种是使用最多的,当然还有很多模式,我这里就不介绍了。第三个参数是缓冲方式,0表示默认、-1表示只缓冲一行数据,任何大于0的都代表给定值的缓冲区大小,没有特殊需求都采用默认,不写。
二、通用换行符(UNS)
不用特殊记忆,只需要知道在python中换行符就是‘\n‘,这就是UNS把不同平台下的‘\r‘,‘\n‘,‘\r\n‘都转换成了‘\n‘,python中默认就是打开了该项服务。
三、输入 read
1、read(size)方法,可以读取指定字节到字符串中,若没有指定,文件将被读取至结尾。
2、readline(),用的最多的,一行一行的读,当然它也有一个参数(size),通常用不到,否则大于size后的字节返回不完整的行。
3、readlines() 方法并不像其它两个输入方法一样返回一个字符串. 它会读取所有(剩余的)行然
后把它们作为一个字符串列表返回。是个列表形式。
四、输出write
1、write() 内建方法功能与 read() 和 readline() 相反. 它把含有文本数据或二进制数据块的字符串写入到文件中去.
2、和 readlines() 一样,writelines() 方法是针对列表的操作, 它接受一个字符串列表作为参数, 将它们写入文件. 行结束符并不会被自动加入, 所以如果需要的话, 你必须在调用writelines()前给每行结尾加上行结束符.
3、注意这里并没有 "writeline()" 方法, 因为它等价于使用以行结束符结尾的单行字符串调用write() 方法.
注意:当使用输入方法如 read() 或者 readlines() 从文件中读取行时, Python 并不会删除行结束符. 这个操作被留给了程序员. 例如这样的代码在 Python 程序中很常见:
f = open(‘myFile‘, ‘r‘)
data = [line.strip() for line in f.readlines()]
f.close()
类似地, 输出方法 write() 或 writelines() 也不会自动加入行结束符. 你应该在向文件写入数据前自己完成
五、文件迭代
for eachLine in f.readline(): 如果你见到这样的代码, 这是"完成事情的老方法", 你可以安全地删除对readline() 的调用。我们可以用文件迭代 for eachLine in f: 就这样简单。
六、close
有open就得有close,关闭文件,尽管Python垃圾回收机制在一定程度上(引用的数量降至0)可以自动关闭文件。如果你不显式地关闭文件, 那么你可能丢失输出缓冲区的数据。调用 flush() 方法会直接把内部缓冲区中的数据立刻写入文件, 而不是被动地等待输出缓冲区被写入.
7、举几个简单的例子:
filename = raw_input(‘Enter file name: ‘)
f = open(filename, ‘r‘)
allLines = f.readlines()
f.close()
for eachLine in allLines:
print eachLine, # suppress print’s NEWLINE
与大多数标准的文件访问方法相比, 它的不同在于它读完所有的行
才开始向屏幕输出数据. 很明显如果文件很大, 这个方法并不好. 这时最好还是回到最可靠的方法:
使用文件迭代器, 每次只读取和显示一行:
filename = raw_input(‘Enter file name: ‘)
f = open(filename, ‘r‘)
for eachLine in f:
print eachLine, f.close()
文件读写很重要!!!