前言:
在Python中,要对一个文件进行操作,只需要使用内置的open函数打开文件即可。open函数接受文件名和打开模式作为参数,返回一个文件对象。工程师通过文件对象来操作文件,完成以后,调用文件对象的close方法关闭文件即可。
新建opentest.py:
f = open("log.log") print(f.read()) f.close()
输出:
2022-02-17 13:41:34,796:INFO:info
2022-02-17 13:41:34,797:WARNING:warning
2022-02-17 13:41:34,797:ERROR:error
2022-02-17 13:41:34,797:CRITICAL:critical
open
函数默认以"r"模式打开,也可以指定文件的打开模式。
"r" : 默认以读模式打开文件,如果文件不存在,抛出FileNotfoundError异常
"w" : 以写模式打开文件,如果文{牛非空,则文件已有的内容会被清空,如果文件不存在,则创建文件
"x" : 创建一个新的文件,如果文件已经存在,抛出FileExistsError异常
"a" : 在文件末尾追加文件
f = open("log.log","w") f.write("hello") f.close()
log.log文件内容
hello
f = open("log.log","a") f.write("world") f.close()
log.log文件内容
helloworld
在计算机程序中,每打开一个文件就需要占用一个文件句柄,而一个进程拥有的文件句柄数是有限的。此外,文件句柄也会占用操作系统的资源,因此,在编写程序处理文件时需要注意,文件处理结束后及时关闭文件。文件句柄泄露或许是最常见的资源泄露问题,也是工程师最容易犯的错误。为了避免打开文件后没有及时关闭,大多数编程语言中都使用finally关闭文件句柄。在 Python中,也可以使用finally
语句来保证,无论在什么情况下文件都会被关闭。
try: f = open("log.log","a") f.write("world") finally: f.close()
Python中还有更加简洁优美的写法,即使用上下文管理器
with open("log.log") as f: print(f.read())
可以看到,使用上下文管理器以后代码行数变少了。在Python
中,如果想把代码写得简洁优美,就应该在保证可读性的前提下代码行数越少越好。
Python提供了三个读相关的函数,分别是read
、readline readlines
,它们的作用如下:
read
:读取文件中的所有内容;2、readline
:一次读取一行;3、readlines
:将文件内容存到一个列表中,列表中的每一行对应于文件中的一行。
with open("log.log") as f: print(f.read()) f.seek(0) #文件读取偏移量到开头 print(f.readline()) f.seek(0) print(f.readlines())
输出:
2022-02-17 13:41:34,796:INFO:info
2022-02-17 13:41:34,797:WARNING:warning
2022-02-17 13:41:34,797:ERROR:error
2022-02-17 13:41:34,797:CRITICAL:critical
2022-02-17 13:41:34,796:INFO:info["2022-02-17 13:41:34,796:INFO:info\n", "2022-02-17 13:41:34,797:WARNING:warning\n", "2022-02-17 13:41:34,797:ERROR:error\n", "2022-02-17 13:41:34,797:CRITICAL:critical"]
Python提供了两个写函数,分别是write
和writelines
,它们的区别如下:
with open("log.log","w") as f: f.write("hello") f.writelines(["\njohn is good man","\nsan is bad man"])
log.log内容
hello john is good man san is bad man
以行为单位依次处理文件中的每一行。
with open("log.log") as f: for line in f: print(line,end="")
到此这篇关于python使用技巧-文件读写的文章就介绍到这了,更多相关python文件读写内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?