Python教程介绍十大常用文件操作,干货满满~~
推荐(免费):Python教程(视频)
日常对于批量处理文件的需求非常多,用Python写脚本可以非常方便地实现,但在这过程中难免会和文件打交道,第一次做会有很多文件的操作无从下手,只能找度娘。
本篇东哥整理了10个Python中最常用到的文件操作,无论是批处理还是读取文件都会用到,相信这个梳理会有所帮助。
1. 显示当前目录
当我们想知道当前的工作目录是什么的时候,我们可以简单地使用os
模块的getcwd()
功能,或者使用pathlib
的cwd()
,如下所示。
>>> # 第一种方法:显示当前目录 ... import os ... print("当前工作目录:", os.getcwd()) ... Current Work Directory: /Users/ycui1/PycharmProjects/Medium_Python_Tutorials >>> # 第二种方法:或者我们也可以使用 pathlib ... from pathlib import Path ... print("当前工作目录:", Path.cwd()) ... Current Work Directory: /Users/ycui1/PycharmProjects/Medium_Python_Tutorials
如果使用的是旧版本的Python(<3.4),则必须使用该os模块。
2. 建立一个新目录
要创建目录,可以使用os
模块的mkdir()
功能。该函数将在指定的路径下创建目录,如果仅使用目录名称,则将在当前目录中创建文件夹,即绝对路径和相对路径的概念。
>>> # 在当前文件夹创建新目录 ... os.mkdir("test_folder") ... print("目录是否存在:", os.path.exists("test_folder")) ... 目录是否存在: True >>> # 在特定文件夹创建新目录 ... os.mkdir('/Users/ycui1/PycharmProjects/tmp_folder') ... print("目录是否存在:", os.path.exists('/Users/ycui1/PycharmProjects/tmp_folder')) ... 目录是否存在: True
但是,如果想要建立一个多层级的目录,比如文件夹中下的文件夹),则需要使用该makedirs()
功能。
>>> # 创建包含子目录的目录 ... os.makedirs('tmp_level0/tmp_level1') ... print("目录是否存在:", os.path.exists("tmp_level0/tmp_level1")) ... Is the directory there: True
如果使用最新版本的Python(≥3.4),则可以考虑利用pathlib
模块创建新目录。它不仅可以创建子目录,而且可以处理路径中所有丢失的目录。
# 使用 pathlib from pathlib import Path Path("test_folder").mkdir(parents=True, exist_ok=True)
需要注意一个问题,如果尝试多次运行上述某些代码,可能会遇到问题“无法创建已经存在的新目录”。我们可以将exist_ok
参设置为True
来处理此问题(默认值False值将阻止我们创建目录)。
&g<strong style="color:transparent">来2源gaodaima#com搞(代@码&网</strong>t;>> # 使用 pathlib ... from pathlib import Path ... Path("test_folder").mkdir(parents=True, exist_ok=False) ... Traceback (most recent call last): File "<input>", line 3, in <module> File "/Users/ycui1/.conda/envs/Medium/lib/python3.8/pathlib.py", line 1284, in mkdir self._accessor.mkdir(self, mode) FileExistsError: [Errno 17] File exists: 'test_folder'
3. 删除目录和文件
完成对某些文件或文件夹的操作后,我们可能希望删除它。为此,我们可以使用os
模块中的remove()
函数来删除文件。如果要删除文件夹,我们应该改用rmdir()
。
>>> # 删除一个文件 ... print(f"* 删除文件前 {os.path.isfile('tmp.txt')}") ... os.remove('tmp.txt') ... print(f"* 删除文件后 {os.path.exists('tmp.txt')}") ... * 删除文件前 True * 删除文件后 False >>> # 删除一个文件夹 ... print(f"* 删除文件夹前 {os.path.isdir('tmp_folder')}") ... os.rmdir('tmp_folder') ... print(f"* 删除文件夹后 {os.path.exists('tmp_folder')}") ... * 删除文件夹前 True * 删除文件夹后 False