文件
文件(File)的简介
通过Python来对计算机中的各种文件进行增删改查的操作
I/O(Input/Output)
1.1 文件打开
操作文件的步骤
1 打开文件
2 对文件进行各种操作(读、写)
3 关闭
1 使用open()函数来打开一个文件
首先介绍一些文件打开的有关知识
open(file, mode=‘r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True)
file指定的是文件路径,分为绝对路径与相对路径
绝对路径:总是从根文件夹开始,Window 系统中以盘符(C:、D:)作为根文件夹.
例如,D:\新建文件夹\文件.py 就是一个绝对路径
相对路径:指的是文件相对于当前工作目录所在的位置。
例如,当前工作目录为 “D:\新建文件夹”,若文件 ‘文件.py’ 就位于这个文件夹下,
则 demo1.txt 的相对路径表示为 “.\demo1.txt”(其中 .\ 就表示当前所在目录)。
2 调用open()来打开一个文件,可以将文件分成两种类型
一种 是纯文本文件(使用utf-8等编码写的文本文件)
一种 是二进制文件(图片、音频、PPT等文件)
open()这个函数打开文件时,默认是以文本文件的形式打开的,就是open()函数参数中的 mode=‘r’
3 处理文本文件时,有时候需要制定文件的编码’encoding’
4 buffering如果为0表示不进行缓冲;如果为1表示进行“行缓冲“;如果是一个大于1的数表示缓冲区的大小,应该是以字节为单位的。
5 read()方法来读取文件的内容,它会将内容全部保存到一个字符串返回
下面举两个例子来打开一个文件
1 首先创建一个1.txt文件,放入所写的内容
file_name = '1.txt'
file_obj = open(file_name)
# read()方法来读取文件的内容,它会将内容全部保存到一个字符串返回
content = file_obj.read()
print(content)
#1,2,3,4,5
2 首先创建一个demo1.txt文件,放入所写的内容
file_name = 'demo1.txt'
# file_obj = open(file_name)
content = file_obj.read()
print(content) # UnicodeDecodeError: 'gbk' codec can't decode byte 0xab in position 2: illegal multibyte sequence
报错说明中文的编码不是默认的ACAll码
可是将encoding修改一下encoding = 'Utf-8'就可以
file_obj = open(file_name,encoding = 'utf-8')
content = file_obj.read()
print(content)
#披绣闼,俯雕甍,山原旷其盈视,川泽纡其骇瞩。
闾阎扑地,钟鸣鼎食之家;舸舰迷津,青雀黄龙之舳。云销雨霁,彩彻区明。
落霞与孤鹜齐飞,秋水共长天一色。
渔舟唱晚,响穷彭蠡之滨;雁阵惊寒,声断衡阳之浦。
1.2关闭文件
1 close()方法用来关闭文件
file_obj.close()
file_name = '1.txt'
file_obj = open(file_name)
content = file_obj.read()
print(content)
# 1,2,3,4,5,6,7
file_name.close()
print(content) # ValueError: I/O operation on closed file.
说明文件已关闭
2 with … as 语句 来打开一个文件,# 语法 with open(file_name) as file_obj
此时这个文件只能在with中使用,一旦with结束文件则会自动close()关闭
下面举例来说明一下
file_name = '1.txt'
try:
with open(file_name) as file_obj:
# 在 with语句中可以直接使用file_obj来操作文件
print(file_obj.read())
# 1, 2, 3, 4, 5, 6, 7
except FileNotFoundError:
print(f'{file_name} 文件不存在...')
print(file_obj.read()) # ValueError: I/O operation on closed file.
说明文件已关闭
1.3标注的一个操作文件的代码
try:
with open('xxx') as file_obj:
pass
except FileNotFoundError:
pass