真香!Python十大常用文件操作,轻松办公( 二 )

另外 , 直接使用 glob模块 也很方便 , 如下所示 , 通过创建可以使用的文件名列表 , 它具有相似的功能 。在大多数情况下 , 例如文件读取和写入 , 两者都可以使用 。
>>> from glob import glob... files = list(glob('h*'))... print("以h开头的文件:", files)... Files starting with h: ['hello_world.txt', 'hello.txt']5. 移动和复制文件移动文件常规文件管理任务之一是移动和复制文件 。在Python中 , 这些工作可以非常轻松地完成 。要移动文件 , 只需将其旧目录替换为目标目录即可重命名该文件 。假设我们需要将所有.txt文件移动到另一个文件夹 , 下面用 Path 来实现 。
>>> target_folder = Path("目标文件")... target_folder.mkdir(parents=True,exist_ok=True)... source_folder = Path('.')... ... txt_files = source_folder.glob('*.txt')... for txt_file in txt_files:...filename = txt_file.name...target_path = target_folder.joinpath(filename)...print(f"** 移动文件 {filename}")...print("目标文件存在:", target_path.exists())...txt_file.rename(target_path)...print("目标文件存在:", target_path.exists(), 'n')... ** 移动文件 hello_world.txt目标文件存在: False目标文件存在: True ** 移动文件 hello.txt目标文件存在: False目标文件存在: True复制文件我们可以利用 _shutil_ 模块中可用的功能 , _shutil_模块是标准库中另一个用于文件操作的有用模块 。我们可以 copy() 通过将源文件和目标文件指定为字符串来在模块中使用该函数 。一个简单的例子如下所示 。当然 , 您可以将 copy() 函数与 glob() 函数结合使用 , 以处理具有相同模式的一堆文件 。
>>> import shutil... ... source_file = "target_folder/hello.txt"... target_file = "hello2.txt"... target_file_path = Path(target_file)... print("* 复制前 , 文件存在:", target_file_path.exists())... shutil.copy(source_file, target_file)... print("* 复制后 , 文件存在:", target_file_path.exists())... * 复制前 , 文件存在: False* 复制后 , 文件存在: True6. 检查目录/文件上面的示例中一直在使用 exists() 方法来检查是否存在特定路径 。如果存在 , 返回True;如果不存在 , 则返回False 。此功能在 os 和 pathlib 模块中均可用 , 各自的用法如下 。
# os 模块中 exists() 用法os.path.exists('path_to_check')# pathlib 模块中 exists() 用法Path('directory_path').exists()使用 pathlib  , 我们还可以检查路径是目录还是文件 。
# 检查路径是否是目录os.path.isdir('需要检查的路径')Path('需要检查的路径').is_dir()# 检查路径是否是文件os.path.isfile('需要检查的路径')Path('需要检查的路径').is_file()7. 获取文件信息文件名称处理文件时 , 许多情况下都需要提取文件名 。使用Path非常简单 , 可以在Path对象上查看name属性 path.name。如果不想带后缀 , 可以查看stem属性 path.stem。
for py_file in Path().glob('c*.py'):...print('Name with extension:', py_file.name)...print('Name only:', py_file.stem)... 带文件后缀: closures.py只有文件名: closures带文件后缀: counter.py只有文件名: counter带文件后缀: context_management.py只有文件名: context_management文件后缀如果想单独提取文件的后缀 , 可查看Path对象的 suffix 属性 。
>>> file_path = Path('closures.py')... print("文件后缀:", file_path.suffix)... File Extension: .py文件更多信息如果要获取有关文件的更多信息 , 例如文件大小和修改时间 , 则可以使用该 stat() 方法 , 该方法和 os.stat() 一样 。
>>> # 路径 path 对象... current_file_path = Path('iterable_usages.py')... file_stat = current_file_path.stat()... >>> # 获取文件大小:... print("文件大小(Bytes):", file_stat.st_size)文件大小(Bytes): 3531>>> # 获取最近访问时间... print("最近访问时间:", file_stat.st_atime)最近访问时间: 1595435202.310935>>> # 获取最近修改时间... print("最近修改时间:", file_stat.st_mtime)最近修改时间: 1594127561.32044178. 读取文件最重要的文件操作之一就是从文件中读取数据 。读取文件 , 最常规的方法是使用内置 open() 函数创建文件对象 。默认情况下 , 该函数将以读取模式打开文件 , 并将文件中的数据视为文本 。


推荐阅读