浅谈PYTHON 关于文件的操作
1.打开文件:
f=open(r'E:\PythonProjects\test7\a.txt',mode='rt',encoding='utf-8')
以上三个单引号内分别表示:要打开的文件的路径,mode为文件打开方式具体介绍在下文,encoding为文件的字符编码,一般默认为utf-8
2.读写文件:
data=f.read() #读文件
f.write() #写文件
3.关闭文件:
f.close()
4.为了简便,一般采用上下文的方法进行文件操作,可不用关闭文件
withopen('a.txt',mode='rt',encoding='utf-8')asf: data=f.read() print(data)
withopen('a.txt',mode='wt',encoding='utf-8')asf: f.write('helloworld')
5.控制文件读写的操作:
r:(默认模式):只读:以该模式打开文件时,若文件不存在则报错,若文件存在,则文件指针在文件开头,即从文件开头开始读文件
w:只写:以该模式打开文件时,若文件不存在则创建一个文件,如文件存在,则清空文件内容,文件指针移到开头
a:追加写:以该模式打开文件时,若文件不存在则创建一个文件,如文件存在,则将文件指针移到文件末尾,在文件末尾写入新的内容
6.控制文件读写内容的模式:(t和b都不能单独使用,必须与r,w,a结合使用)
t:(默认):无论读写都是以字符为单位,只能识别文本文件,必须要制定encoding
b:无论读写都是以字节为单位,可以识别所有文件,一定不能指定encoding
7.文件的拷贝
withopen('a.txt',mode='rb')asaf,\ open('b.txt',mode='wb')asbf: data=af.read f.write(data)
执行程序后,打开文件,即可发现文件已成功拷贝,这里使用b而不是用t模式,是因为文件有多种格式
8.文件的修改:
文件的修改是在硬盘上实现文件的覆盖,相当于一个新的文件以旧的文件名来命名的;文件的修改有俩种方式,分别适用于不同的情景
方式一(适用于容量小的文件):这种方式的原理是:创建一个新的文件,将旧文件的内容拷贝到新的文件中;这样内存里就存在俩个文件,故不适用于容量大的文件,具体代码见下方View
withopen('a.txt',mode='rt',encoding='utf-8')asf: data=f.read() data_new=data.replace('yang','yv') withopen('b.txt',mode='wt',encoding='utf-8')asp: p.write(data_new)
方式二(适用于容量大的文件):此方式的原理为:读取旧文件的一行内容,修改后写到临时文件中,循环往复直到写完,然后将源文件删除,将临时文件命名为源文件名.这种方式在内存中只存在2行文件,节省内存,可用于大文件
importos withopen('b.txt',mode='rt',encoding='utf-8')asf,\ open('.b.txt.swap',mode='wt',encoding='utf-8')asp: forlineinf: p.write(line.replace('yv','yang')) #调用replace方法,将源文件中的'yv',换成'yang' os.remove('b.txt') os.rename('.b.txt.swap','b.txt')
9.文件的阶段:truncate(n)
将文件中n个字节后内容全删了,当n不存在时,即删除文件全部内容
10.文件内指针的移动
f.seek(): 指针的移动是以字节为单位的
seek有三种模式:
1:指针在当前位置
2:指针在文件末尾
以下为具体事例:
#0 withopen('a.txt',mode='rt',encoding='utf-8')asf: f.seek(3,0) print(f.tell())#指针当前位置 print(f.read())#从指针后读出所有内容 #1参照指针当前位置 withopen('a.txt',mode='rb')asf: f.read(2) f.seek(4,1) print(f.tell()) print(f.read().decode('utf-8')) #2参照文件末尾 withopen('a.txt',mode='rb')asf: f.seek(-5,2) print(f.tell()) print(f.read().decode('utf-8'))
当seek处于2模式时,可以将文件中新加入的内容打印出来,具体代码如下:
#另一个文件进行写操作,写的代码如下: withopen('a.txt',mode='at',encoding='utf-8')asf: f.write('helloworld\n') #每在文件中写入新的内容,都打印出来,以下代码执行打印操作: importtime withopen('a.txt',mode='rb')asf: f.seek(0,2) whileTrue: line=f.readline()#readline可以读取没有内容的部分 #print(line.decode('utf-8')) iflen(line)==0: time.sleep(0.1) else: print(line.decode('utf-8'))
以上所述是小编给大家介绍的PYTHON关于文件的操作详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!