用python读取文档_Python读写文件

用python读取文档_Python读写文件一 读写文件方式在当前 python 文件同级目录下存在一个名为 file 的文件 内容如下 1 使用 withopen 读取文件 defread file filepath withopen filepath asfp content fp read returnconten read file file print ret 在上述脚本中可以发现 content 作为一个列表 虽然在 wi

一、读写文件方式

在当前python文件同级目录下存在一个名为file的文件,内容如下

562030-20190702091829279-1504186918.png

1、使用with open读取文件

defread_file(filepath):

with open(filepath) as fp:

content=fp.read();returncontent

ret=read_file(‘file’)print(ret)

562030-20190702091557306-858424709.png

在上述脚本中可以发现,content作为一个列表,虽然在with open结构体内,但在with open结构体外也可以使用,但在方法内部定义的变量,在方法外部一般是不能访问的,这在java中被称为局部变量。

2、不使用with读取文件

defread_file(filepath):

fp=open(filepath)

content=fp.readlines()

fp.close()returncontent

ret=read_file(‘file’)print(ret)

562030-20190702091914786-97161430.png

通过对两种读取方式的对比发现,第一种方式比较简洁,不用关心流是否关闭,with会在文件不再使用时自动关闭流,并且输出的格式与文件内容中显示的一致。第二种方式就必须要手动显示的关闭流,且输出格式与文件内容不同,需要进行特殊处理,且发生异常之后,可能会导致流未正常关闭。

对第二种方式输出结果做处理,使其与文件内容一致,。readlines方法返回的为一个列表,故需要对类表进行遍历,替换特殊符号

defread_file(filepath):

str=””fp=open(filepath)

content=fp.readlines()for c incontent:

str+=c.replace(‘\n’,’\n’)

fp.close()returnstr

ret=read_file(‘file’)print(ret)

562030-20190702094333799-1543510477.png

实际使用中,建议使用第一种方式来读写文件内容,当文件不在当前python文件同级目录时,可使用绝对路径后者相对路径来确定文件的位置

二、文件打开方式

open方法可以传递两个参数,第一个参数为文件路径,第二个参数为打开文件的方式,可选值为r/w/a/r+

r 只读模式打开文件,如果为传递第二个参数,则默认为r

w 写入模式打开文件

a 附加模式打开文件

r+ 读取和写入模式打开文件

1、只读模式(如上述实例),如果文件不存在,则抛出No such file or directory的异常

2、写入模式

如果写入的文件不存在,则会新建该文件,并且写入内容,如果文件已存在,则会覆盖文件之前内容,所以使用该方式时需要慎重,确定文件中之前内容被覆盖是否影响当前业务逻辑。

defw_file(filepath):

with open(filepath,’w’) as wf:

wf.write(‘today is a nice day\n’)

wf.write(‘do you want to take a trip.’)

w_file(‘wfile.txt’)

562030-20190702105740328-174777695.png

写入模式只能写入,不能读取,若果在wf.write下面添加如下脚本,则会出现io.UnsupportedOperation: not readable的异常

content=wf.read()print(content)

562030-20190702110310657-1602518610.png

3、附加模式

defa_file(filepath):

with open(filepath,’a’) as af:

af.write(‘nice day\n’)

af.write(‘good start.’)

a_file(‘file’)

562030-20190702112336987-557801606.png

4、读写模式

defrw_file(filepath):

with open(filepath,’r+’) as rwf:

rwf.write(‘This is myfile.\n’)

rwf.write(“The end.”)

content=rwf.read()returncontent

content=rw_file(‘myfile’)print(content)

与读取模式相同,若文件不存在,也将抛出异常

562030-20190702205250564-1641397177.png

在当前Python脚本所在同级目录新建文件myfile,重新执行

562030-20190702205905663-505190828.png

562030-20190702210019809-1896626844.png

通过上述控制台输出及文件内容来看,控制台并未输出任何内容,但要写入的信息已经保存到文件中,这说明,在执行read时,信息还未被写入文件。

如果该文件内容已存在,执行上述读写程序,是否能够读取到文件内容,来尝试一下,保留上次myfile中内容,程序中向文件添加一行记录,再次读取之前文件内容

defrw_file(filepath):

with open(filepath,’r+’) as rwf:

rwf.write(“new append”)

content=rwf.read()returncontent

content=rw_file(‘myfile’)print(content)

562030-20190703084000324-683037549.png

562030-20190703084011043-1222377978.png

可以看到,读取的内容与原有文件内容不同,缺少了This is my字符,而文件中新添加的new append刚好填充了缺少的字符所在位置。

上述示例先写入,再读取,出现上述情况也是意料之中,那么如果先读取之前文件,在写入,是否就和预期一样,读取原有文件内容,并且添加新内容?

现在文件myfile内容如下

562030-20190702210019809-1896626844.png

defrw_file(filepath):

with open(filepath,’r+’) as rwf:

content=rwf.read()

rwf.write(‘\nappend new line.\n’)

rwf.write(“new end.\n”)returncontent

content=rw_file(‘myfile’)print(content)

562030-20190703085419572-1388284478.png

562030-20190703085435392-1375873961.png

如上所示,答案是肯定的,先读取出了原有内容,在原有内容基础上添加了新内容。所以我们在使用的时候要注意读取和写入的顺序。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212352.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午8:14
下一篇 2026年3月18日 下午8:15


相关推荐

  • 树莓派控制摄像头_树莓派连接摄像头

    树莓派控制摄像头_树莓派连接摄像头树莓派外接摄像头,最常用的有两种:CSI摄像头、USB摄像头。当然网络摄像头也是可以的。一般的USB摄像头都是UVC免驱的,而且可以方便的插拔和安装,平时最为常用。一、硬件设备usb摄像头使用的罗技c310。(只要是UVC免驱就可以)二、连接并测试摄像头lsusb并将usb摄像头插上插入usb摄像头后,会显示设备ID和信息,像我的:Bus001Device008:ID046d:081bLogitech,Inc.WebcamC310…

    2022年10月10日
    5
  • 动态添加流式布局

    动态添加流式布局自定义流式布局 之前的一篇文章写过 这里就不阐述了 http blog csdn net article details 随后封装一个方法工具类 GradientDraw 代替 shape StateListDra 替换 selector 设置 publicclassD GradientDraw

    2026年3月16日
    2
  • 微机原理与接口技术课程论文_微机原理与接口技术谁讲得好

    微机原理与接口技术课程论文_微机原理与接口技术谁讲得好《微机原理与接口技术综述论文》由会员分享,可在线阅读,更多相关《微机原理与接口技术综述论文(5页珍藏版)》请在人人文库网上搜索。1、微机原理与接口技术综述论文班级:10计本(1)班姓名:许生亮学号:1004011029微机原理课程综述论文内容摘要:微机原理与接口技术是计算机科学与技术专业非常重要的一门专业课程,它与前面的电路分析、数字逻辑、计算机组成原理,以及后面的体系结构、单片机应用、嵌入…

    2022年10月2日
    3
  • pycharm加注释的快捷方式_pycharm全部注释

    pycharm加注释的快捷方式_pycharm全部注释Ctrl+F1显示错误描述或警告信息Alt+Enter快速修正Ctrl+R替换Ctrl+Shift+F或者连续2次敲击shift全局查找{可以在整个项目中查找某个字符串什么的,如查找某个函数名字符串看之前是怎么使用这个函数的}Ctrl+Shift+R全局替换Alt+Shift+F10运行模式配置Alt+…

    2022年8月28日
    8
  • centos7执行ip addr命令ens33没有ip地址「建议收藏」

    centos7执行ip addr命令ens33没有ip地址「建议收藏」之前使用正常的虚拟机,突然的就连接不上了。执行ipaddr命令ens33没有ip地址查了几篇相关文章解决方法,主要有四种:mac地址问题 ONBOOT问题 uuid问题 NetworkManager问题目录mac地址问题ONBOOT问题uuid问题NetworkManager问题mac地址问题(我用的VMwareWorkstationP…

    2022年7月27日
    45
  • scrt远程连接工具怎么切换窗口

    scrt远程连接工具怎么切换窗口scrt远程连接工具怎么切换窗口

    2022年4月23日
    109

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号