Python_⽂件的读写操作
python对⽂件的操作通过open()函数来实现,⽂件操作有两种模式:读、写
⼀、读
通过对open()函数的mode参数传⼊"r"值可打开⽂件,然后使⽤读的⽅法读取⽂件内容,⼀般有开就有关,所以还需要⽤close()⽅法关闭⽂件,避免产⽣内存溢出的问题。另外,若读取的⽂件不存在,则会抛错。
例:读取当前⽬录下的⽂件,该⽂件如下所⽰。
代码实现:
f = open("./", "r")
ad())
f.close()
执⾏结果:
从上图看出,读取的内容,中⽂显⽰乱码,可以在读取⽂件时增加参数encoding=“utf-8”解决该问题
f = open("./", "r", encoding="utf-8")
ad())
f.close()
执⾏结果:
读的⽅法
上⾯例⼦中使⽤了read()⽅法读取⽂件,除此之外,还有readline()和readlines()这两种⽅法。下⾯依次讲解每种读法的不同之处。
read()
该⽅法是读⽂件最常⽤的⽅法,特点是,使⽤该⽅法默认情况下是将⽂件中的所有内容⼀次性全部读取出来,⽐如上⾯的⽰例,但是也可以读取指定字节的内容。
f = open("./", "r", encoding="utf-8")
# 只读取前⾯5个字节
ad(5))
f.close()
执⾏结果:
readline()
该⽅法是将⽂件内容⼀⾏⼀⾏读取,特点是,执⾏⼀次读取⼀⾏,如果要读取完⽂件,就要执⾏多次。
f = open("./", "r", encoding="utf-8")
i = 1
while True:
content = f.readline()
if not content:
break
print(f"第{i}次读:{content}")
i += 1
f.close()
执⾏结果:
readlines()
该⽅法也是将⽂件内容⼀⾏⼀⾏读取,特点是,⼀次性读取所有内容,并将每⾏的数据保存在⼀个列表。
f = open("./", "r", encoding="utf-8")
adlines())
f.close()
执⾏结果:
处理换⾏符\n
使⽤ readlines() ⽅法读取的内容会有换⾏符\n,极不⽅便我们对数据的处理。处理换⾏符的⽅法多种多样,下⾯介绍⼀种最简单的⽅法,使⽤字符串的内置⽅法 splitlines() ,该⽅法是将字符串以\n为分隔符进⾏切割。
t = "AAAA\nBBB\nCCC"
print(t.splitlines())
f = open("./", "r", encoding="utf-8")
ad().splitlines())
f.close()
输出结果
综上,python读取⽂件的操作最常⽤的⽅法只需要记住read()⽅法就可以了。
⼆、写
与读⽅法类似,不同的是mode参数传⼊的值不同,需要传⼊“w”或”a“ 看到这⾥,有些读者可能会想,写为什么可传⼊两种写模式?因为读的操作只有⼀种场景,但写的场景却有覆盖写和追加写两种场景。
1、覆盖写:w
覆盖写的特点
会清空原⽂件内容
当⽂件不存在时,会新增⽂件python怎么读的
如下,写⼊‘你好,世界!’时,将原来的内容都清空。
f = open("", "w")
f.write("你好,世界!")
f.flush()
f.close()
执⾏代码后的⽂件内容如下:
f.flush():有时我们⽤f.write()后,会发现没有写⼊⽂件,这是因为内容存在了缓冲区,需要等缓冲区满了之后,再把所有数据写⼊。此时可以⽤f.flush()强制把
缓冲区⾥⾯的数据写到磁盘上。
2、追加写: a
追加模式a特点:
即在原内容末尾添加新内容
当⽂件不存在时,创建新⽂件
f = open("", "a")
f.write("你好,python!")
f.flush()
f.close()
将‘你好,python’添加到原内容的末尾
除了以上r,w,a三种模式外,还有⼀种读写模式,在上⾯三种中模式中,任意⼀种模式后⾯增加+即为读写模式,读写模式很少⽤,仅供了解,下表为各种模式的总结:
读写模式是否可读是否可写⽂件不存在时
r是否报错
r+是是,覆盖写报错
w否是,覆盖写创建新⽂件
w+是是,覆盖写创建新⽂件
a否是,追加写创建新⽂件
a+是是,追加写创建新⽂件
三、⽂件指针
⽂件指针⽤来记录⽂件⾛到哪⾥。
⽂件指针是很重要的,我们看下⾯的例⼦中,read将的内容全部读了出来,readline则没有读出任何内容。原因是read读完之后,⽂件指针到了⽂件的末尾,此时readline接着从这个位置开始读,肯定是没内容的。因此有时需要调整⽂件指针的位置。
f = open("")
print("read读的:", f.read()) # 已经读到最后⼀⾏
print("readline读的:", f.readline()) # 指针连着上⼀个操作,从最后⼀⾏读,所以没内容
f.close()
输出结果:
read读的:你好,世界!
你好,pathon!
readline读的:
seek可以移动⽂件指针,移动后只是针对读,⽤追加模式写的时候,还是在末尾写。
另外,seek(num),这个num指的是字符,不是⾏。注:中⽂占两个字符!
在上⾯的代码中,加⼀句f.seek(0),即可将指针移到⽂件开头。这次,readline就可以从头开始读了。
f = open("")
print("read读的:", f.read()) # 已经读到最后⼀⾏
f.seek(2) # 中⽂占两个字符,若输⼊1则会报错
print("readline读的:", f.readline()) # 指针连着上⼀个操作,从最后⼀⾏读,所以没内容
f.close()
输出结果:
read读的:你好,世界!
你好,pathon!
readline读的:好,世界!
四、使⽤with打开⽂件
with 语句是 Pyhton 提供的⼀种简化语法,通过 with 语句在编写代码时,会使代码变得更加简洁,不⽤再去关闭⽂件。
with open('', 'a', encoding="utf-8") as f:
f.writelines('\n三体')
上⾯的代码等效于
f = open("./", "w+", encoding="utf-8")
f.write("aaa")
f.close()
五、⽂件修改
1、简单粗暴直接修改
最简单粗暴的修改⽂件,步骤是:
(1)打开⽂件,获取⽂件内容;
(2)对内容进⾏修改;
(3)清空原来⽂件的内容;
(4)把新的内容写进去。
这种⽅法很简单,下⾯看⼀个⼩例⼦----⽂件username⾥存放了姓名和密码,如下图格式。我们要在所有姓名前加上‘A班_’
因为'A班_'中含有中⽂,需要叫上encoding='utf-8',否则会出现乱码。
2、备份⽂件的⽅法
当⽂件很⼤时,刚刚的⽅法在⼀次性读取⽂件内容和写⼊新内容时,耗时长,占⽤磁盘空间也较⼤。
备份⽂件的⽅法是建⽴⼀个备份⽂件,读⼀点,改⼀点,写⼀点,具体步骤如下:
(1)打开2个⽂件,原⽂件a和备份⽂件b。如a.txt b.txt.bak
(2)删除a⽂件,将b⽂件名改为a⽂件名
例:将⽂件words⾥的“花”改成“flower”
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论