Python目录和文件管理
Python 目录管理概述
在本教程中,您将学习 Python 中的文件与目录管理操作,包括创建目录、重命名、列出内容以及遍历目录树等常用方法。
目录结构基础
如果 Python 程序需要处理大量文件,我们可以将代码和资源安排在不同的目录中,以使项目更易于管理。
目录(Directory)或文件夹(Folder)是文件和子目录的集合。Python 的标准库 os 模块为我们提供了许多用于操作目录和文件的实用方法。
- *
获取当前目录
我们可以使用 os 模块的 getcwd() 方法来获取当前的工作目录(Current Working Directory)。
此方法以字符串形式返回当前工作目录的路径。此外,还可以使用 getcwdb() 方法将其作为字节对象(bytes object)获取。
>>> import os
>>> os.getcwd()
'C:\\Program Files\\PyScripter'
>>> os.getcwdb()
b'C:\\Program Files\\PyScripter'输出中多余的反斜杠表示转义序列。在使用 print() 函数输出时,路径会被正确渲染。
>>> print(os.getcwd())
C:\Program Files\PyScripter- *
变更目录
我们可以使用 chdir() 方法更改当前工作目录。
目标路径必须作为字符串传递给此方法。在路径中,我们可以使用正斜杠 / 或反斜杠 \ 来分隔路径元素。
需要注意的是,在 Windows 系统中使用反斜杠时,建议使用双反斜杠 \\ 或原始字符串以避免转义序列问题。
>>> os.chdir('C:\\Python33')
>>> print(os.getcwd())
C:\Python33- *
列出目录和文件
使用 listdir() 方法可以检索指定目录中的所有文件和子目录名称。
此方法接受一个路径参数,返回该路径下的子目录和文件列表。如果未指定路径,它将返回当前工作目录中的内容列表。
>>> print(os.getcwd())
C:\Python33
>>> os.listdir()
['DLLs',
'Doc',
'include',
'Lib',
'libs',
'LICENSE.txt',
'NEWS.txt',
'python.exe',
'pythonw.exe',
'README.txt',
'Scripts',
'tcl',
'Tools']
>>> os.listdir('G:\\')
['$RECYCLE.BIN',
'Movies',
'Music',
'Photos',
'Series',
'System Volume Information']- *
创建新目录
我们可以使用 mkdir() 方法创建一个新的目录。
此方法接受新目录的路径作为参数。如果未指定完整路径(即相对路径),则会在当前工作目录中创建新目录。
>>> os.mkdir('test')
>>> os.listdir()
['test']- *
重命名目录或文件
rename() 方法可用于重命名目录或文件。
重命名时,rename() 方法需要两个基本参数:第一个参数为旧名称(或旧路径),第二个参数为新名称(或新路径)。
>>> os.listdir()
['test']
>>> os.rename('test', 'new_one')
>>> os.listdir()
['new_one']- *
删除目录或文件
可以使用 remove() 方法删除(移除)文件。
同样,rmdir() 方法可用于删除一个空目录。
>>> os.listdir()
['new_one', 'old.txt']
>>> os.remove('old.txt')
>>> os.listdir()
['new_one']
>>> os.rmdir('new_one')
>>> os.listdir()
[]注意:rmdir() 方法只能删除空目录。若要删除非空目录(即包含文件的目录),可以使用 shutil 模块中的 rmtree() 方法。
>>> os.listdir()
['test']
>>> os.rmdir('test')
Traceback (most recent call last):
...
OSError: [WinError 145] The directory is not empty: 'test'
>>> import shutil
>>> shutil.rmtree('test')
>>> os.listdir()
[]- *
遍历目录树
可以使用 walk() 方法遍历目录树下的所有文件。
os.walk() 函数返回一个生成器对象(generator object)。通过该生成器,可以获取给定文件层次结构中每个目录的信息元组。
每个元组包含三个元素:
- 当前目录的路径(字符串类型)。
- 当前目录下的子目录名称列表(列表类型)。
- 当前目录下的文件名称列表(列表类型)。
以下是目录树的示例结构:

让我们对 test 目录传递 os.walk() 函数进行遍历:
>>> for i in os.walk('/home/pl/test'):
... print(i)
...
('/home/pl/test', ['cgi-bin'], ['dgs.png', 'index.html'])
('/home/pl/test/cgi-bin', ['backup', 'another'], ['hello.py'])
('/home/pl/test/cgi-bin/backup', [], [])
('/home/pl/test/cgi-bin/another', [], ['data.txt'])- *
说明:本文示例基于 Python 3 环境编写,代码在 Windows 与 Linux 路径处理上可能略有差异。虽然 os 模块依然广泛使用,但在现代 Python 开发中,推荐使用 pathlib 模块进行更面向对象的路径操作。
版权声明:本文为原创文章,版权归 戴老师的博客 所有,转载请联系博主获得授权。
本文地址:https://1diff.fun/archives/python-mu-lu-he-wen-jian-guan-li.html
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。