文件类型
(1)二进制文件
存储普通的“字符”文本,默认使用u'nicode字符集,可以使用记事本打开
(2)二进制文件
将数据使用“字节”进行存储,无法使用记事本打开,必须使用专用软件打开
如:MP3音频文件、图片、doc文件等
打开模式 | 描述 |
r | 只读模式打开,打开后文件指针在文件开头位置 |
w | 写入模式打开,如果文件不存在则创建,文件存在则覆盖原有内容,打开后文件指针在文件开头 |
a | 追加模式打开,如果文件不存在则创建文件,此时指针会在文件开头,如果文件存在,则在文件末尾追加内容,文件指针在文件末尾 |
b | 二进制模式打开,不能单独使用,与其他模式一起使用,rb或者wb |
+ | 读写方式打开 ,不能单独使用,与其他模式一起使用,a+ |
os模块
os模块是python内置的与操作系统功能和文件系统相关的模块,执行结果与操作系统有 关,结果可能存在差异。
(1)打开文件、写入内容、关闭文件
# import os # 这是内置的,一般情况下不用再import
s = '这里是新输入的内容!'
file = open('filename.txt','a',encoding='UTF-8')
file.write(s)
file.close()
(2)获取当前工作目录
# os.getcwd()获取当前文件工作目录
print(os.getcwd())
(3) 创建目录
# 创建目录 mkdir(path[,mode])
os.mkdir('D:\\Pystudy\\base_exercise\\base_exercise2022')
# 创建多级目录 makedirs(path1/path2..[,mode])
os.makedirs('D:\\Pystudy\\base_exercise\\base_exercise20\\2021\\24')
(4)删除目录
# 删除目录 rmdir(path)
os.rmdir('D:\\Pystudy\\base_exercise\\base_exercise20\\2021\\24')
# 删除多级目录 removedirs(path1/path2...),删除所有为空的目录
os.removedirs('D:\\Pystudy\\base_exercise\\base_exercise20\\2021\\24')
(5)设置当前工作目录
# 将path设置为当前工作目录 chdir(path)
os.chdir('D:\\Pystudy\\base_exercise\\test')
print(os.getcwd())
(6)改变光标的位置
# f.seek(offset, whence) 可以改变文件对象的位置。通过向参考点添加 offset 计算位置;参考点由 whence 参数指定。 whence 值为 0 时,表示从文件开头计算,1 表示使用当前文件位置,2 表示使用文件末尾作为参考点。省略 whence 时,其默认值为 0,即使用文件开头作为参考点。
f.seek(2)
(7)获取当前光标位置
# f.tell() 返回整数,给出文件对象在文件中的当前位置,表示为二进制模式下时从文件开始的字节数,以及文本模式下的意义不明的数字。
f.tell()
(8)获取当前目录下的文件(含后缀)及目录名
print(os.listdir())
(9)清楚内容
# truncate()用于清除内容
f.truncate(0) # 清空整个文件
os.path模块
(1)绝对路径
# abspath(path) 获取文件或目录的绝对路径
print(os.path.abspath('a.txt'))
(2)判断文件是否存在
#exists(path) 判断文件或目录是否存在,存在True,否则False
print(os.path.exists('a.txt'))
(3)目录拼接
#join(path,name) 将目录与目录或文件名拼接起来
print(os.path.join('test','a.txt'))
(4)目录分离
path, filename = os.path.split(os.path.abspath('a.txt'))
(5)提取文件名
#basename(path) 从一个目录中提取文件名
print(os.path.basename('D:\\Pystudy\\a.txt'))
(6)提取路径名
#dirname(path) 从一个路径中提取文件路径,不含文件名
print(os.path.dirname('D:\\Pystudy\\base_exercise'))
(7)判断是否为目录
#isdir(path) 判断是否为路径
print(os.path.isdir('D:\\Pystudy\\base_exercise'))
with上下文管理
with open('a.txt','r',encoding='UTF-8') as f:
print(f.read()) # 读取文件内容,返回字符串
读取全部文件内容
with open('a.txt', 'r', encoding='UTF-8') as f:
print(f.readlines()) # 读取多行内容,返回列表
获取文件中对应的行索引
# enumerate()
with open('a.txt', 'r', encoding='UTF-8') as f:
#print(f.readlines()) # 读取多行内容
for i in enumerate(f.readlines()): #返回元组
print(i)