标识符 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
w | 打开一个文件只用于写入。若是该文件已存在则将其覆盖。若是该文件不存在,建立新文件。 |
wb | 以二进制格式打开一个文件只用于写入。若是该文件已存在则将其覆盖。若是该文件不存在,建立新文件。 |
w+ | 打开一个文件用于读写。若是该文件已存在则将其覆盖。若是该文件不存在,建立新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。若是该文件已存在则将其覆盖。若是该文件不存在,建立新文件。 |
a | 打开一个文件用于追加。若是该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容以后。若是该文件不存在,建立新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。若是该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容以后。若是该文件不存在,建立新文件进行写入。 |
a+ | 打开一个文件用于读写。若是该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。若是该文件不存在,建立新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。若是该文件已存在,文件指针将会放在文件的结尾。若是该文件不存在,建立新文件用于读写。 |
要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符。缓存
>>> f = open('/Users/wangjuan/test.txt', 'r') #文件打开成功,调用read()方法能够一次读取文件的所有内容 >>> f.read() 'Hello, it is a test case!' #调用close()方法关闭文件 >>> f.close()
文件使用完毕后必须关闭,由于文件对象会占用操做系统的资源,而且操做系统同一时间能打开的文件数量也是有限的。app
因为文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。因此,为了保证不管是否出错都能正确地关闭文件,咱们可使用try ... finally来实现:函数
try: f = open('/Users/wangjuan/test.txt', 'r') print(f.read()) finally: if f: f.close()
可是每次都这么写实在太繁琐,因此,Python引入了with语句来自动帮咱们调用close()方法:spa
with open('/Users/wangjuan/test.txt', 'r') as f: print(f.read())
readlines() 方法用于读取全部行(直到结束符 EOF)并返回列表,该列表能够由 Python 的 for... in ... 结构进行处理。若是碰到结束符 EOF 则返回空字符串。举例以下:操作系统
file = '/Users/wangjuan/test.txt' f = open(file, 'r') # 按行读出文件内容 sourceInLines = f.readlines() f.close() # 定义一个空列表,用来存储结果 new = [] for line in sourceInLines: temp1 = line.strip('\n') # 去掉每行最后的换行符'\n' temp2 = temp1.split(',') # 以','为标志,将每行分割成列表 new.append(temp2) # 将上一步获得的列表添加到new中
写文件和读文件是同样的,惟一区别是调用open()函数时,传入标识符'w'或者'wb'表示写文本文件或写二进制文件:指针
>>> f = open('/Users/wangjuan/test.txt', 'w') >>> f.write('Hello, world!') >>> f.close()
能够反复调用write()来写入文件,可是务必要调用f.close()来关闭文件。当咱们写文件时,操做系统每每不会马上把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操做系统才保证把没有写入的数据所有写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。因此,仍是用with语句来得保险:code
import os def write_re(result,type): file = str(os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, "data/result.txt"))) with open(file, type) as f: f.write(result)
固然若是你想写入的内容继续叠加的话,可使用标识符'a'或者' a+'或者'ab+'。对象
以上,对你有帮助的话,点赞吧~ip