分类: Python/Ruby
打开一个文件并向其写入内容 ')Python的open方法用来打开一个文件。第一个参数是文件的位置和文件名,第二个参数是读写模式。这里我们采用w模式,也就是写模式。在这种模式下,文件原有的内容将会被删除。 #to writetestFile = open('cainiao.txt','w') #error testFile.write(u'菜鸟写Python!') #写入一个字符串 testFile.write('菜鸟写Python!') #字符串元组 codeStr = ('<div>','<p>','完全没有必要啊!',' ',' testFile.write('\n\n') #将字符串元组按行写入文件 testFile.writelines(codeStr) #关闭文件。 testFile.close()向文件添加内容 在open的时候制定'a'即为(append)模式,在这种模式下,文件的原有内容不会消失,新写入的内容会自动被添加到文件的末尾。 #to appendtestFile = open('cainiao.txt','a') testFile.write('\n\n') testFile.close()读文件内容 在open的时候制定'r'即为读取模式,使用 #to readtestFile = open('cainiao.txt','r') testStr = testFile.readline() print testStr testStr = testFile.read() print testStr testFile.close()在文件中存储和恢复Python对象 使用Python的pickle模块,可以将Python对象直接存储在文件中,并且可以再以后需要的时候重新恢复到内容中。 testFile = open('pickle.txt','w')#and import pickle import pickle testDict = {'name':'Chen Zhe','gender':'male'} pickle.dump(testDict,testFile) testFile.close() testFile = open('pickle.txt','r') print pickle.load(testFile) testFile.close()二进制模式 调用open函数的时候,在模式的字符串中使用添加一个b即为二进制模式。 #binary modetestFile = open('cainiao.txt','wb') #where wb means write and in binary import struct bytes = struct.pack('>i4sh',100,'string',250) testFile.write(bytes) testFile.close() 读取二进制文件。 testFile = open('cainiao.txt','rb')data = testFile.read() values = struct.unpack('>i4sh',data) print values1.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) 注意,调用writelines写入多行在性能上会比使用write一次性写入要高。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278) w 以写方式打开 (必要时清空) a 以追加模式打开 (从 EOF 开始, 必要时创建新文件) r 以读写模式打开 w 以读写模式打开 (参见 w ) a 以读写模式打开 (参见 a ) rb 以二进制读模式打开 wb 以二进制写模式打开 (参见 w ) ab 以二进制追加模式打开 (参见 a ) rb 以二进制读写模式打开 (参见 r ) wb 以二进制读写模式打开 (参见 w ) ab 以二进制读写模式打开 (参见 a ) a. Python 2.3 中新增 |
|