《我的世界》Python编程⼊门(12)⽂件操作
⼀切皆⽂件!⽂件、⽬录、硬件设备、⽹络
字符流、字节流(⼆进制)
IO类操作的注意事项:⽂件是否存在,⽂件是否关闭
⼀、⽂件操作基础
读写⽂件是最常见的IO操作。
Python内置了读写⽂件的函数open()。
在读写⽂件前,我们先必须了解⼀下,在磁盘上读写⽂件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写⽂件就是请求操作系统打开⼀个⽂件对象(通常称为⽂件描述符),然后,通过操作系统提供的接⼝从这个⽂件对象中读取数据(读⽂件),或者把数据写⼊这个⽂件对象(写⽂件)。
⽂件对象必须正常关闭,否则打开的⽂件⼀直留存在内存中。
这样会什么危害?(同时能打开的⽂件的数量有限制,内存⼤⼩有限制!)
⼆、open函数
open()函数⽤于打开⼀个⽂件,并返回⽂件对象,在对⽂件进⾏处理都需要使⽤到这个函数,如果⽂件⽆法被打开,会报错。
open()函数常⽤形式是接收两个参数:⽂件路径(file)和模式(mode)。
例如:open(file, mode='r')
参数说明:
file: 必需,⽂件路径(相对或者绝对路径)。
mode: 可选,⽂件打开模式
mode是⼀个可选字符串,⽤于指定打开⽂件的模式。常⽤的模式如下:
'r'读取(默认)
'w'写⼊,并先截断⽂件
'a' 写⼊,如果⽂件存在则在末尾追加
'b'⼆进制模式
't'⽂本模式(默认)
'+' 更新磁盘⽂件(读取并写⼊)
默认的模式是 'r'(打开并读取⽂本,同'rt' )。
常见的mode字符可以进⾏组合,常见的有:'a+','wb'
Python区分⼆进制和⽂本I/O。以⼆进制模式打开的⽂件(包括mode 参数中的'b')返回的内容为 bytes对象,不进⾏任何解码。在⽂本模式下(默认情况下,或者在 mode 参数中包含't')时,⽂件内容返回为 str ,⾸先使⽤指定的 encoding (如果给定)或者使⽤平台默认的的字节编码解码。
理论上open函数可以打开所有⽂件,但是某些⽂件的内容⽤字符表⽰可能⽆实际意义。
三、读写⽂件操作
3.1 建⽴⽂本⽂件
1.⼿⼯创建
(1)利⽤记事本()创建
在Windows中最简单的建⽴⽂本⽅法就是打开记事本()程序,输⼊⽂本,保存⽂件。
(2)利⽤右键菜单创建
在⽂件夹中或桌⾯上单击右键,在右键菜单中选择新建>⽂本⽂档创建⽂本⽂件。
(3)利⽤vscode创建
使⽤vscode创建⼀个新⽂件,默认的保存格式即⽂本⽂件(.txt)
2.利⽤Python创建
使⽤Python编程创建⽂本⽂件:
newfile='d:/t1.txt'
b_new_file=open(newfile,'w')
b_new_file.close()
代码解读:
第1⾏:newfile='d:/t1.txt'
定义需要创建的⽂件的路径及名称(⽂件的位置)
第2⾏:b_new_file=open(newfile,'w')
使⽤内置函数函数open建⽴⽂件
第3⾏:b_new_file.close()
使⽤close()⽅法关闭新建的⽂件
注意事项:
⽂件的名称建议按照Python标识符的命名要求,即以英⽂字母、数字和下划线组合的字符串,不能⽤⼀些特殊字符命名,否则操作系统可能不识别。
3.2使⽤⽂件对象的write()⽅法写⽂件
基本步骤
f =open(file,'w')
#利⽤open函数创建⽂件,并返回⽂件对象f。
#其中file为⽂件的路径,open函数的模式字符串中要包含w或者a。建议⽤a不⽤w!当⽂件⾥已经有内容的情况下,w会直接把⽂件清空,然后写⼊新内容。f.write(s)
#利⽤⽂件对象f的写⼊⽅法write()写⼊内容,s为字符串,即写⼊的内容
案例1:
newfile='d:/t1.txt'
#定义需要建⽴的⽂本名称和路径
b_new_file=open(newfile,'w')
#⽤open函数建⽴⼀个新的⽂本⽂件
t_n=b_new_file.write('我爱Python!')
#⽤⽂件对象write()⽅法写字符串
b_new_file.close()
#⽤close()⽅法关闭⽂件
3.3 使⽤⽂件对象read()⽅法读⽂件
基本步骤
f =open(file,'r')
python怎么读文件夹下的文件夹
其中file为⽂件的路径,open函数的模式字符串中要包含r。
案例2:
newfile=r'd:/t1.txt'
#定义需要建⽴的⽂本名称和路径
b_new_file=open(newfile,'r')
#以只读⽅式打开t1.txt⽂件
text=b_ad()
#⽤⽂件对象read()⽅法读取内容
print(text)
#打印读取内容
b_new_file.close()
#关闭打开的⽂件
如果读⽂件时⽂件不存在,open()函数就会抛出⼀个IOError的错误,并且给出错误码和详细的信息告诉你⽂件不存在。
类似以下错误信息:
Traceback (most recent call last):
File "<stdin>", line 1,in<module>
FileNotFoundError:[Errno 2] No such file or directory
3.4 复杂的⽂件读写
3.4.1 ⼀次写⼊多⾏
思路:本⾝Python提供的⽂件的写⼊⽅法是⼀次性写⼊,想写⼊多⾏数据,要么把多⾏数据连接在⼀起,要么利⽤循环,把多⾏内容追加到⽂件中。
案例3:
nums=['one','two','three','four','five','six','seven']
t=open('d:/t2.txt','a')
for i in nums:
t.write(i +'\n')
#换⾏符为不可见字符,Python中⽤'\n'表⽰
t.close()
#程序正常运⾏后,打开⽂件观察内容是否正常写⼊
3.4.2 以列表形式读取多⾏
⽂件对象的readlines()⽅法⽤于读取所有⾏(直到结束符EOF)并返回列表,该列表可以由 Python 的 in ...结构进⾏处理。如果碰到结束符 EOF则返回空字符串。
readlines()⽅法语法格式如下:
⽂件对象.readlines()
返回值为列表,包含⽂件中所有的⾏,每⾏⼀个元素。
案例4:
fo =open("d:/t2.txt","r")
print("⽂件名为: ", fo.name)
adlines()
print(f)
for line in f:
#依次读取每⾏
line = line.strip()
#去掉每⾏头尾空⽩
print("读取的数据为: %s"%(line))
# 关闭⽂件
fo.close()
结果为
⽂件名为:
d:\t2.txt
['one\n','two\n','three\n','four\n','five\n','six\n','seven\n']
读取的数据为: one
读取的数据为: two
读取的数据为: three
读取的数据为: four
读取的数据为: five
读取的数据为: six
读取的数据为: seven
四、with语句(上下⽂管理器),
上⾯的例⼦中,调⽤close()⽅法关闭⽂件太繁琐,Python提供了上下⽂管理器,来帮助我们关闭打开的⽂件。
with语句⽤于包装带有使⽤上下⽂管理器 定义的⽅法的代码块的执⾏。
案例5:
fn='d:/t2.txt'
with open(fn,'r')as f:
ad())
open函数的返回值赋值给变量 f,当离开 with 代码块的时候,哪怕遇到什么异常,系统会⾃动调⽤ f.close() ⽅法。
因此,使⽤with语句打开⽂件就⽆需显式调⽤ close⽅法。
补充:使⽤with语句处理⼤⽂件
read()是⼀次性把⽂件内容以字符串的⽅式读到内存
readlines()是⼀次性读取所有内容,并按⾏⽣成⼀个列表,
因⼀次性读取,若⽂件内容过⼤,内存资源不⾜,则会提⽰错误“MemoryError”。
使⽤with open() as f:语法打开的⽂件,f对象为可迭代对象,使⽤for i in f循环,会⾃动使⽤缓冲IO以及内存管理,因此效率较⾼,内存占⽤⼩,可以完美的解决读写⼤⽂件问题。
因此,对⽂件操作强烈建议使⽤with语句。
五、综合案例
练习内容
1.在程序当前⽂件夹⾃动建⽴⽂件。
2.向⽂件中写⼊⾃⼰的姓名、年龄、性别、籍贯,每项内容占⼀⾏。
3.读取该⽂件的所有内容,并打印显⽰。
练习要点
1.建⽴路径时,需要检测路径是否存在
2.open函数的使⽤
3.⽂件对象⽅法的使⽤
代码实现
#写⼊⽂件
newpath=''
nums=['yan','20','男','河南']
t=open(newpath,'a')
#追加写⼊模式打开⽂件
for i in nums:
#循环,迭代获取列表元素
t.write(i +'\n')
#把每个元素循环写⼊⽂件中,⾏末加\n换⾏
t.close()
#关闭⽂件
print('连续写⼊完成!')
#提⽰写⼊结束
#读取⽂件,并打印输出
with open(newpath,'r')as f:
for i adlines():
print(i)
总结
⽂件操作步骤:
1.利⽤open函数打开或创建⽂件对象,open函数有两个参数,file:⽂件的路径,mode:⽂件对象的读写模式
2.利⽤⽂件对象的读写⽅法读写⽂件
3.利⽤⽂件对象的close⽅法,关闭⽂件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论