Python 常用自带 Libraries - 文件操作
Python 常用自带 Libraries - 文件操作
1. 文件路径 glob
import glob
path_li = glob.glob('data/*.wav') # 获得 data 文件夹下所有 '.wav' 文件的路径
# Return: list 类型
2. 文件路径 os
1 path 路径操作
-
os.path.abspath(path)返回文件的绝对路径如果
path带磁盘目录(如C:),则返回值不变如果
path带磁盘目录,则返回os.path.join(os.getcwd(), path) -
os.path.dirname(path)返回文件目录(directory),即文件所在文件夹的路径 -
os.path.basename(path)返回文件名,带后缀 -
os.path.splittext(path)分割文件路径是根据
.来分割的,os.path.splittext(path)[1]获得文件后缀名
测试实例,os.path.splittext():
import os
path1 = os.path.splitext('C:/User/data/test.tar.gar')
# Output: ('C:/User/data/test.tar', '.gar')
path2 = os.path.splitext('C:/User/data/test.tar')
# Output: ('C:/User/data/test', '.tar')
path3 = os.path.splitext('C:/User/data/test')
# Output: ('C:/User/data/test', '.gar')
用于判断的函数
-
os.path.isfile(path):路径是否为文件 -
os.path.isdir(path):路径是否为目录 -
os.path.isabs(path):否是为绝对路径 -
os.path.exists():路径是否存在
2 文件操作
-
os.rename(src, dst):重命名文件或目录 -
os.remove(path):删除文件,删除目录会报错 -
os.rmdir(path):删除目录(文件夹),目录必须为空(目录不存在文件或文件夹)- 如果要删除整个目录,使用
shutil.rmtree()
- 如果要删除整个目录,使用
-
os.removedirs(path):递归的删除目录,目录必须为空;会从子目录一直向上删除,直到存在一父目录不为空- 如:
os.removedirs('foo/bar/baz')将首先删除目录 'foo/bar/baz',如果 'foo/bar' 和 'foo' 为空,则继续删除它们。
- 如:
3. 文件路径 pathlib
os.listdir(path):返回 list 类型,获得 path 目录下所有文件名(非路径)
参考资料
[1] Python os.path() 模块, RUNOOM, 地址
[2] Python3 OS 文件/目录方法, RUNOOM, 地址
from pathlib import Path
filename = Path("source_data/text_files/raw_data.txt")
print(filename.name) # 文件名,带后缀
# output: "raw_data.txt"
print(filename.suffix) # 文件名后缀
# output: "txt"
print(filename.stem) # 文件名,不带后缀
# output: "raw_data"
4. shutil 文件操作
1 单个文件操作
-
shutil.copyfileobj(fsrc, fdst[, length]):拷贝文件内容shutil.copyfileobj(open('old.txt', 'r'), open('new.txt', 'w'))
-
shutil.copyfile(src, dst, *, follow_symlinks=True):将src文件的内容(不包括元数据)拷贝到dst文件 -
shutil.copymode(src, dst, *, follow_symlinks=True):将src文件的权限位(permission bits)拷贝到dst文件,dst文件内容、用户、组不会改变 -
shutil.copystat(src, dst, *, follow_symlinks=True):将src文件权限位(permission bits)、最近访问时间、最近修改时间以及 flag 到dst文件 -
shutil.copy(src, dst, *, follow_symlinks=True):将src文件的内容拷贝到dst文件/目录 -
shutil.copy2(src, dst, *, follow_symlinks=True):与copy()类似,并且会同时拷贝元数据
2 整个目录操作
-
shutil.copytree(src, dst, symlinks=False, *):-
将以
src为根起点的整个目录树拷贝到名为dst的目录并返回目标目录 -
目录的权限和时间会通过
copystat()来拷贝,文件则会使用copy2()来拷贝 -
~~ 不懂
symlinks的含义~~
-
-
shutil.rmtree(path, ignore_errors=False, onerror=None):删除文件或整个目录
3 文件或整个目录操作
shutil.move(src, dst, copy_function=copy2):将一个文件或目录(src)移至另一位置(dst)并返回目标位置

浙公网安备 33010602011771号