日常对于批量处理文件的需求非常多,用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值将阻止我们创建目录)。