Python基础:打开和读写文件 | 您所在的位置:网站首页 › python语言可以调用什么函数写入文本文件 › Python基础:打开和读写文件 |
打开文件
python打开文件有两种写法: 一种是直接open: f = open('/Users/alice/output.txt', 'r')另一种是使用with open: with open('/Users/alice/output.txt') as f:有什么区别呢? 因为文件使用完毕后必须关闭,否则文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限。 因此一般会在open之后进行close,如下: f = open('/Users/alice/output.txt', 'r') print(f.read()) f.close()为了确保打开文件出错时也能正常关闭,则要使用try...finaly...方法。 try: f = open('/Users/alice/output.txt', 'r') print(f.read()) finally: if f: f.close()而使用with open的方式打开文件进行读写后会自行关闭文件,而且语法更为简单。 with open('/Users/alice/output.txt') as f: print(f.read())多个文件的读,可以使用 with open('/Users/alice/output.txt','r') as f: with open('/Users/alice/a.txt','r') as f1: with open('/Users/alice/b.txt','r') as f2:写文件 直接open的使用: f = open('/Users/alice/output.txt', 'w') f.write('ocr') f.close()with open的使用: with open('/Users/alice/output.txt','w') as f: f.write('result')常见错误 在使用的过程中最容易出现的两个错误提示是: 1、io.UnsupportedOperation: not writable 问题原因:文件打开后不具备写的权限,检查打开文件后是否没有 'w'参数,或参数为'r' 解决方案:文件路径后增加'w' 2、TypeError: a bytes-like object is required, not 'str' 问题原因:文件打开后的参数设置为'wb',按二进制write导致写的内容有问题 解决方案:将'wb',改为'w' 3、SyntaxError: unexpected EOF while parsing 问题原因:写的代码构成了无限循环,所以报错,解决即为添加结束条件 解决方案:打开文件后无后续步骤,需要有读写或者close的处理 参数 上述在打开文件以及常见错误中提到了参数 "r"、参数'wb',这个参数决定了打开文件的模式:只读,写入,追加等。 非强制参数,如果无任何参数时,默认文件访问模式为只读,即'r'。 全部参数可能的类型和作用如下: 模式描述r只读方式打开文件。文件的指针放在文件的开头。rb以只读且二进制格式打开文件。文件指针将会放在文件的开头。r+打开一个文件用于读写。指针放在文件的开头。rb+以二进制格式打开一个文件用于读写。指针放在文件的开头。w打开文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。wb以二进制格式打开文件,只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。wb+以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。代码参考 拷贝下面代码到pycharm,运行,查看输出结果 #coding = utf-8 f = open('/Users/alice/Documents/Develop/PythonCode/output.txt.txt', 'w') f.write('ocr') f.close() f = open('/Users/alice/Documents/Develop/PythonCode/output.txt.txt','r') print(f.read()) f.close() with open('/Users/alice/Documents/Develop/PythonCode/output.txt.txt','w') as f: f.write('result') f.close() with open('/Users/alice/Documents/Develop/PythonCode/output.txt.txt') as f: print(f.read())输出结果: /Users/alice/venv/untitled/bin/python /Users/alice/PycharmProjects/untitled/openfile.py ocr result Process finished with exit code 0
|
CopyRight 2018-2019 实验室设备网 版权所有 |