Python基础:打开和读写文件 您所在的位置:网站首页 python语言可以调用什么函数写入文本文件 Python基础:打开和读写文件

Python基础:打开和读写文件

2024-07-12 15:22| 来源: 网络整理| 查看: 265

打开文件

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 实验室设备网 版权所有