Python基础第16讲 - Python文件
文件(File)
通过Python来对计算机中的各种文件进行增删改查的操作
I/O(Input/Output)
一、文件打开
操作文件的步骤
1、打开文件
2、对文件进行各种操作(读、写)
3、关闭
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
使用open()函数来打开一个文件
'''
参数:
file :要打开文件的名字(路径)
返回值:返回的是一个对象,这个对象就是代表了当期打开的文件
'''
file_name = 'demo.txt'
file_name1 = 'adc/demo1.txt'
file_name2 = 'D:/新桌面/任务.txt'
print(open(file_name))
print(open(file_name1))
print(open(file_name2))
file_obj = open(file_name)
content = file_obj.read()
print(content)
file_obj.close()
with ... as ... 语句 为文件设置的
with open(file_name4) as file_obj ==> file_obj = open(file_name)
标准的一个操作文件的代码
try:
with open('xxx') as file_obj:
pass
except FileNotFoundError:
pass
file_name4 = 'demo.txt'
with open(file_name4) as file_obj:
print(file_obj.read())
print(file_obj.read())
'''
案例2
'''
try:
with open(file_name5) as file_obj:
print(file_obj.read())
except FileNotFoundError:
print(f'{file_name5} 文件不存在...')
调用open()来打开一个文件,可以将文件分车成两种类型
1、纯文本文件(使用UTF-8等编码写的文本文件)
2、二进制文件(图片、音频、PPT、视频等文件)
open()这个函数打开文件时,默认是以文本文件的形式打开的
file_name = 'demo2.txt'
try:
with open(file_name,encoding='utf-8') as file_obj:
content = file_obj.read()
print(content)
except FileNotFoundError:
print(f'{file_name}文件不存在')
二、较大文件的读取
如果直接调用read()这个函数,它会将文本内容全部读取
如果要读取的内容文件比较大的情况,会一次性将文件的内容加载到内存中,容易导致内存泄漏
read()函数可以接收一个size作为参数,该参数用来指定读取的字符的数量
默认值是-1 它会读取文件中所有的字符
可以为size指定一个值,这样read()函数会读取指定数量的字符
每一次读取都是从上次读取到的位置开始读取
如果字符的数量小于size,则会读取剩余所有的字符
file_name = 'demo.txt'
try:
with open(file_name,encoding='utf-8') as file_obj:
file_content = ''
c = 100
while True:
content = file_obj.read(c)
if not content:
break
file_content += content
except FileNotFoundError:
print(f'{file_name}文件不存在')
print(file_content)
三、其他的读取方式
readline()
'''
readline() 可以用来读取一行内容
'''
file_name = 'demo2.txt'
with open(file_name,encoding='utf-8') as file_obj:
print(file_obj.readline(),end='')
print(file_obj.readline())
readlines()
'''
readlines() readlines() 也是用于一行一行的读取内容,一次性读取封装到一个列表中返回
'''
file_name = 'demo2.txt'
with open(file_name, encoding='utf-8') as file_obj:
print(file_obj.readlines()[1])
四、文件的写入
r 表示只读
w 表示可以写 所以我们可以使用w来写入文件,如果文件不存在会创建文件,如果文件存在则会覆盖原文件的内容
a 表示追加内容 如果文件不存在会创建文件,如果文件存在则会像文件中追加内容
+ 为操作符增加功能
r+ 既可读又可写,文件不会报错
x 用来创建文件,如果文件不存在就创建,如果存在就报错
file_name = 'demo3.txt'
with open(file_name,'w',encoding='utf-8') as file_obj:
file_obj.write('aaaaaaaaaa\n')
file_obj.write('bbbbbbbbbb\n')
file_obj.write('cccccccccc\n')
file_obj.write(str(456))
五、二进制文件
'''
读取模式
t 去取文本文件(默认值)
b 读取二进制文件
'''
file_name = r'H:\计算机要点\文件\Kalimba.mp3'
with open(file_name,'rb') as file_obj:
new_name = 'abc.mp3'
with open(new_name,'wb') as new_obj:
c = 1024 * 100
while True:
content = file_obj.read(c)
if not content:
break
new_obj.write(content)
七、读取文件的位置
'''
tell() 方法用来检查当前读取的位置
seek() 可以修改当前读取的位置
参数:0 从头开始 默认
1 从当前位置
2 从最后位置计算
'''
with open('demo3.txt','rb') as file_obj:
print(file_obj.read())
print('当前读取到了-->',file_obj.tell())
八 、文件的其他操作
listdir() 获取当前目录结构
r = os.listdir('..')
os.getcwd() 获取当前所在的目录
os.rmdir('adc')
创建目录 在当前目录创建
os.mkdir('abc')
r = os.getcwd()
print(r)