1.打开文件
open() 函数
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):
#file:要打开的文件的名字(路径)
# mode:文件读写模式,默认情况下是读取操作
r:表示只读
w:表示只写,如果文件不存在就会创建文件,如果文件存在就会截断文件(删除原来文件中的所有内容)
a:表示追加内容,如果文件不存在会创建文件,如果文件存在则会向文件追加内容
x:表示创建文件,如果文件不存在则创建,如果存在则报错
t:表示读取文本文件(默认值)
b:表示读取二进制文件
+:为操作符增加功能(r+,w+,a+)可读可写
#其他参数有默认值,可以不填写
#open函数具有返回值:
#返回一个对象,这个对象就代表了当前打开的文件
调用open()来打开一个文件,可以将文件分成两种类型。
第一种,是纯文本(使用utf-8等编码编写的文本文件)
第二种,是二进制文件(如图片,mp3,ppt等文件)
默认情况下,open()是以纯文本文件的形式打开的。但是open()默认的编码为None,所以处理文本文件时(如中文文件和SCII码以外),必须指定文件的编码格式。
如果目标文件和当前文件在同一级目录下,则直接使用文件名即可,不在同一级路径下,要填写路径。
注意:在windows系统下,使用路径时可以用反斜杠‘/’来代替斜杠‘\’,或者使用双斜杠\\来代替,或者使用r函数,获取原始字符串来代替,防止路径转义。在linux系统下,可以直接使用‘\’,如果目标文件距离当前文件比较远,此时可以使用绝对路径。绝对路径应该从磁盘的根目录开始书写。
2.关闭文件
close() 函数
手动调用close函数来关闭文件,但此方法容易忘记关闭文件。
一般情况下,我们使用with...as... 语句。
with open(file_name) as file_obj:
#在with语句作用域中可以直接使用file_obj来做文件操作
#此时这个文件只能在with中使用,已但with结束则文件会自动close()
print(file_obj.read())
#为防止文件操作异常,一般情况下,我们使用try...except...来捕获异常
try:
with open(file_name) as file_obj:
#文件操作
except FileNotFoundError:
print('文件不存在')
3. 读取文件
1)read()函数
用来读取文件内容,它会将文件里的内容全部保存为一个字符串返回。
如果要读取的文件比较大的话,会一次性将文件的内容加载到内存中,容易导致内存泄露。所以对于较大的文件,不要直接调用read()。
read()可以接收一个参数,作为size来指定要读取的字符的数量,默认值为-1,它会读取文件中的所有字符。
指定size大小之后,就会读取指定数量的字符串,此时读取规则:
- 每一次读取都是从上次读取结束的位置开始的
- 如果字符串的数量小于size,则会读取剩余所有的
- 如果已经读取到了文件的最后了,则会返回空字符串
注意:读取文本文件时是以字符为单位,而读取二进制文件时是以字节为单位的。
2)readline()函数
该方法可以用来读取一行内容,通过一行一行的读取,来对大文件进行分块读取操作。
3)readlines()函数
该方法也是一行一行的读取内容,但它会把整个文件一次性读取完全,然后会返回一个列表,列表的元素是每一行的数据。通过制定下标可以直接访问每一行的内容。
4)另一种方式读取每行数据:
for line in file_object:
print(line)
5)tell()函数
查看当前读取到的位置
6)seek()函数
可以修改当前读取的位置
需要两个参数:
第一个 要切换到的位置
第二个 位置的开始查找的方式:
0 从头计算,默认值
1 从当前位置开始计算
2 从最后位置开始计算
3.文件写入
write()函数
可以向文件中写入内容,接收一个字符串作为参数,所以写入的内容必须是字符串,可以分多次向文件中写入内容,每次写入后会返回写入的字符串个数。
写入二进制文件,需要在w操作符的基础上添加b操作符,即‘wb’
with open('/Users/zhuyanlei/Desktop/demo.txt','w',encoding = 'utf-8') as file_obj:
file_obj.write('bbb\n')
file_obj.write('ccc\n')
file_obj.write('ddd\n')
file_obj.write('eee\n')
4. OS模块
os.listdir()
获取指定目录的目录结构
需要一个路径作为参数,会获取到该路径下的目录结构,默认路径为‘.’即当前目录
该方法会返回一个列表,目录中的每一个文件的名字都是列表中的一个元素
os.getcwd()
获取当前所在的目录
os.chdir()
切换当前所在的目录,作用相当于cd
os.mkdir(‘aaa’)
在当前目录下,创建一个叫aaa的目录
os.rmdir(‘aaa’)
删除aaa目录
os.rename('旧名字',‘新名字’)
可以对一个文件进行重命名,也可以移动一个文件