python-文件
文件
通python程序来对计算机中的各个文件进行增删改查的操作
在其他语言中有称为 I/O(input / output),在python中就称为文件(file)
操作文件的步骤:
打开文件
对文件进行各种操作(读,写)然后保存
关闭文件
打开文件
open()函数用来打开文件
参数:
()里有一个位置参数和多个关键字参数
file 位置参数 是 大开文件的路径
mode 读还是写操作
encoding = 指定的字符编码返回值:
返回一个对象,这个对象就代表了当前打开的文件
例:
file = open('./hhh.txt','w',encoding = 'utf-8')
# 用file这个对象来接收open()的返回值
print(file)
# 输出结果
# <_io.TextIOWrapper name='./hhh.txt' mode='w' encoding='utf-8'>
关闭文件
接上面的已经打开文件了
lose()
这个函数用来关闭文件
如果是这样写的话每次调用都要手动关闭文件,有的时候可能会忘掉,可以用以下方法
```
例:
with open('hhh.txt','w',encoding='utf-8') as file :
print(file)
# 这个输出结果还是
# <_io.TextIOWrapper name='hhh.txt' mode='w' encoding='utf-8'>
# as 后面的file 就是 通过 前面的 with 把 open()这个返回值赋值给 file这个对象中
# 在这个语句的下一级进行的操作都是对file这个对象进行的操作
# file这个对象就是打开的文件,可以这样理解
# 在with语句结束时文件会自动的colse()
例:
file_name = 'hello'
try:
with open(file_name) as file_obj :
print(file_obj.read())
except FileNotFoundError:
print(f'{file_name} 文件不存在~~')
# 可以通过try语句来对这个语句进行异常捕获
# 如果系统内该文件不存在就打不开,然后报错,通过捕获异常来解决或者提醒
读取文件
调用open()函数来打开一个文件,可以将文件分成两种类型
一种 纯文本文件(使用utf-8等编码编写的文本文件)
一种 二进制文件(图片,音乐,视频等文件)
open()打开文件时,默认是以文本文件的形式打开的,但是open()默认的编码为None 就是 encodig = None
所以处理文本文件时,必须要指定文件的编码
read()
通过read()来读取内容
如果直接调用read()会将文件内的所有内容全部读取出来
这时如果文件比较大的话,会一次性将文件的内容都加载到内存中,容易导致内存泄漏
所以对于比较大的文件不要直接调用read()
read()可以接受一个size作为参数,该参数用来指定要读取的字符数量
默认值是-1,也就是全部读取
可以为size指定一个值,这样read()会读取指定数量的字符
每一次读取都是从上次读取到的位置开始读取的
如果字符的数量小于size,则会读取剩余所有的
如果已经读取到了文件的最后了,则会返回 ‘ ‘空字符串
例: # 写入文件的with语句 with open('hhh.txt','w',encoding='utf-8') as file : # 这是写入文件,现在先不深究 file.write('hhh,hello,python\n') file.write('hhh,hello,world\n') file.write('hhh,hello,lmk\n') file.write('hhh,hello,genji\n') # 读取文件的with语句 with open('hhh.txt','r',encoding='utf-8')as file: # 一次性读取16个字符 print(file.read(16)) print(file.read(16)) print(file.read(16)) print(file.read(16))
例: 定义一个循环用来读取文件的内容 with open('hhh.txt','r',encoding='utf-8') as file: b = '' while True: c = file.read(1024) if not c: break b += c print(b)
readline()
>该方法可以用来读取一行内容
和read()差不多readlines()
>该方法用于一行一行的读取内容,并且会一次性将读取到的内容封装到一个列表中返回
文件的写入
使用open()打开文件时必须要指定打开文件所需要的操作,(读,写,追加)
如果不能指定操作类型,则默认是读取文件,而读取文件时,是不能向文件中写入的
r 表示只读
w 表示可写的,使用w来写入文件时,如果文件不存在会创建该文件,如果存在就会清空重新写
a 表示追加内容 如果问阿金不存在会创建文件,如果文件存在则会向文件中追加内容
x 用来新建文件,如果文件不存在则创建,存在则报错- + 为操作符增加功能
r+ 即可读又可写
w+ 在写中加入了读的功能
a+ 在追加中加入了读的功能
- + 为操作符增加功能
write()
用来向文件中写入内容
如果操作的是一个文本文件的话,则write()需要传递一个字符串作为参数,就是要写入的内容
该方法会多次向文件中写入内容
写入完成后,该方法会返回写入的字符个数
with open('hhh.txt','w',encoding='utf-8') as file : # 写入文件 file.write('hhh,hello,python\n') file.write('hhh,hello,world\n') file.write('hhh,hello,lmk\n') file.write('hhh,hello,genji\n') # 每次写入完成后file就会返回写入的字符串的个数(长度)
文件
读取模式
t 读取文本文件(默认值)
b 读取二进制文件读取文本文件
with open('hhh.txt','rt',encoding='utf-8') as file : file.read(10) # 读取文本文件时size是以字符为单位的 # 这里读取了10个字符
读取二进制文件
with open('hhh.txt','rb') as file : file.read(1024) # 读取二进制文件时size是以字节为单位的 # 这里读取了1024个字节 也就是 1024b
将一个音乐文本读取然后写入到另一个文本中
a = 'C:/Users/12482/Music/キセキ - GReeeeN.ncm' with open(a,'rb') as file: b = 'aa.ncm' with open(b,'wb') as files: while True: c = file.read(2048) if not c: break files.write(c)
读取文件的位置
seek()
这个函数可以修改文件当前读取的位置,和光标差不多
seek() 需要两个参数
1,要切换到的位置
2,计算位置方式
可选值,
0,从头计算,默认值 切换到的位置当做开头
1,从当前位置计算 从当前位置往后读切换的位置的数
2,从最后位置开始计算# file_obj.seek(55) 从第55个字符或字节开始读或写 # file_obj.seek(80,0) 就是从 80个字符或字节开始读或写 # file_obj.seek(70,1) 从当前位置往后在读 70个字符或字节 # file_obj.seek(-10,2) 从最后十个开始读或写
tell()
该方法用来查看当前读取的位置
例: print(file.tell()) # 查看当前文件读取到哪里了
本博客所有文章是以学习为目的,如果有不对的地方可以一起交流沟通共同学习 邮箱:1248287831@qq.com!