Python学习计划(八)
文件操作
一、路径
1、构建通用路径
Windows、Linux os系统上路径分隔符不同,所以最好统一
2、当前目录
获取当前目录路径
改变当前路径
os.chdir(path)3、绝对路径于相对路径
绝对路径:总是从根文件夹开始
.\ 代表当前路径
相对路径:相对于程序的当前工作目录
…\代表父目录路径
4、处理决定路径和相对路径
os.path.abspath(path):将相对路径转为绝对路径os.path.isabs(path):判断是否为绝对路径
os.path.relpath(path,start):返回从start路径到path的相对路径的字符串,没start使用当前
os.path.basename(filepath):返回文件路径最后的文件名
os.path.dirname(filepath):返回文件路径的文件名
os.path.split(filename):分别返回文件路径和文件名
5、查看路径有效性
os.path.exists(path):检查路径是否存在os.path.isfile(path):检查文件是否存在
os.path.isdir(path):检查文件夹是否存在
二、文件夹于文件
1、创建文件夹
2、文件的打开与关闭
(1)基本操作流程:
打开文件,或者建立一个文件
读/写数据
关闭文件
(2)打开文件:
使用open函数,可以打开一个已经存在的文件,或者创建一个新的文件
例如:
f = open('test.txt',w)访问模式列表:
访问模式
说明
r
以只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式。
w
打开一个文件只用于写入。如果该文件已经存在则将其覆盖。如果文件不存在,创建新文件。
a
打开一个文件用于追加。如果该文件已经存在,文件指针会放在文件的结尾。也就是说,新的内容写入到已有内容之后,如果该文件不存在,创建新文件进行写入。
rb
以二进制格式打开一个文件用于只读,文件指针将会放在文件的开头,这是默认模式。
wb
以二进制格式打开一个文件只用于写入,如果该文件已存在则将其覆盖。,如果该文件不存在,创建新文件。
ab
以二进制格式打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾,也就是说文件的内容将会被写入到已有的内容之后,如果该文件不存在,创建新文件进行写入。
r+
打开一个文用于读写。文件指针将会放在文件的开头。
w+
打开一个文件用于读写。如果该文件已存在则将其覆盖。如果不存在,创建新文件。
a+
打开一个文件用于读写。如果该文件已存在,文指针将会放在文件的结尾。文件打开时会是覆盖后的内容,如果文件不存在,创建新文件。
rb+
以二进制格式打开一个文件用于读写,文件指针将会放在文件的开头。
wb+
以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创新新文件。
ab+
以二进制格式打开一个文件用于追加。如果文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
(3)关闭文件:
调用close()函数
3、文件读写
(1)write函数:向文件写入数据
f.write('hello world,I am here')
f.close()
注意:如果文件不存在则创建,如果存在则先请空,然后再写入数据
(2)read(num)函数:
以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据
conuent = f.read(5)
print(content)
print("-"30)
content = f.read()
print(content)
f.close()
注意:
- 如果open仅仅读取一个文件,那么可以不用写打开的模式,即只写open(‘test.txt’)
- 如果使用读了多次,那么后面读取的数据是从上次读完后的位置开始的
- 读取的文件如果包含中文时,最好open(‘test.txt’,encoding=‘utf-8’)
(3)tell()函数:获取当前读写的位置
(4)seek(offset,from)函数:定位到某个位置
- offset:偏移量
- from:方向
- 0:表示文件开头
- 1:表示当前位置
- 2:表示文件末尾
4、文件和文件夹的复制
需要导入shutil模块
shutil.copytree(原路径,目标路径)
注意:
- copy(文件路径,文件夹路径):将文件复制到文件夹
- copy(文件路径,文件路径):复制文件并重命名os.rename()
- copytree复制文件夹所以内容
5、文件和文件夹的移动与改名
shutil。move(目标,目的)注意:
- 目标为文件,目的为已知目录,则移动文件
- 目标为文件,目的为路径不存在的目录,则为文件无后缀名
- 目标为文件,目的为文件,则移动文件并改名
- 目标为文件,目的为路径不存在的文件,报错
6、文件和文件夹的删除
os.unlink(path):删除文件os.remove(path)
os.rmdir(path):删除文件夹,必须为空
shutil.rmtree(path):删除文件夹,全删
(1)安全删除:
需导入send2trash模块
删除时入回收站,但不恢复
(2)另外将二进制数据(变量)持久化保存
写入操作:
导入shelve库
shelf[key]=value:以键值对方式保存,类似于字典
shelf.close():关闭
读取操作:
导入shelve库
shelf[key]:读取数据
shelf.close():关闭
同样拥有key(),values()方法获取所有键和值
创作者:Eric· Charles