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
)并返回目标位置