python对文件的处理_Python中对文件处理

本文详细介绍了Python中open()函数的使用,包括文件的相对和绝对路径、不同模式(读、写、追加)的打开方式以及编码设置。还讨论了文件对象的方法如read()、readline()和readlines(),并提醒读者在写入文件时需要注意的数据同步问题,特别是在使用write()和flush()时确保数据实际写入硬盘。
摘要由CSDN通过智能技术生成

open(file_name,mode,encoding)输出参数:

file_name = 'a.txt' #以相对路径打开(优先使用,可移植性强)

'''a.txt # 与当前py程序在同一级目录下

r'dir\a.txt' # 在当前路径的子目录dir下的a.txt'''file_name= r'D:\PYTHON\OLDBOY\DAY7\a.txt' #以绝对路径打开#**********************************************************

mode = 'rt' 'rb' #只读模式打开,r表示文本模式,b表示字节模式。对于图片、音频、视频等文件需要用字节模式操作

'''1.文件不存在会报错

2.文件指针移到文件开头'''mode= 'wt' 'wb' #只写模式打开

'''1.文件不存在则创建文件,指针在文件开头

2.文件存在则会清空文件内容,指针在文件开头'''mode= 'at' 'ab' #追加模式打开(只写),指针在文件末尾

'''1.文件不存在则创建文件,指针在文件开头

2.文件存在则将指针移到文件尾。(所写入的内容追加到文件尾)'''

#**********************************************************

encoding = 'utf-8'encoding= 'GBK'

'''指定文件的打开编码模式(文件以什么编码存,就以什么编码打开)

即可保证不乱码

当以字节模式打开时,该参数不可设置!'''

#**********************************************************

open(file_name, mode, encoding=encoding)

open()方法返回一个文件对象,使用完毕后需要调用f.close()方法释放文件对象。python中提供了更简洁的方式:

with open('a.txt','r') as f:pass

# 在with代码块下的语句都执行完时,会自动释放文件内存。

文件对象的内置方法:

with open('a.txt','r',encoding='utf-8') as f:

data= f.read() #一次性读取所有内容到内存中

print(data)

with open('a.txt','r',encoding='utf-8') as f:

data= f.readline() #读取一行内容到内存中

print(data)

with open('a.txt','r',encoding='utf-8') as f:

data= f.readlines() #一次性读取所有内容,以每行内容作为元素返回一个列表

print(data)

with open('a.txt','w',encoding='utf-8') as f:

f.write('哈哈哈哈')

f.writelines(['哈哈哈','啊啊啊啊'])

**********************************************************************************************

关于读写要注意的地方:

当以w方式打开一个文件,调用f.write()的方法时,写入的数据在内存中,注意:在f.close()之后才会写入到硬盘之中。

当以r方式打开一个文件,调用f.read()的方法时,将实时读取硬盘中的数据。(内部机制可能时句柄,操作系统会向句柄管理员实时汇报内容)

验证代码:

监控:

importtime

with open('c.txt','r',encoding='utf-8')as f:

f.seek(0,2)whileTrue:

res=f.readline()ifres:print(res,end='')else:

time.sleep(0.5)

写入:

importtime

with open('c.txt', 'a', encoding='utf-8') as f:whileTrue:

time.sleep(1)print('zhengzaishuru')

f.write(time.strftime('%Y-%m-%d %H:%M:%S\n'))

将监控不到任何数据,原因就是:在写入未运行close()之前,内容不会被写入。而中断程序,将不会运行close()方法。所以c.txt里的内容不会有任何变化。

加入flush()将写入的内容存储至硬盘

importtime

with open('c.txt', 'a', encoding='utf-8') as f:whileTrue:

time.sleep(1)print('zhengzaishuru')

f.write(time.strftime('%Y-%m-%d %H:%M:%S\n'))

f.flush()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值