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)并返回目标位置
posted @ 2022-02-12 11:01  veager  阅读(119)  评论(0编辑  收藏  举报