# Python 目录和文件管理

> 原文： [https://www.programiz.com/python-programming/directory](https://www.programiz.com/python-programming/directory)

#### 在本教程中，您将学习 Python 中的文件和目录管理，即创建目录，重命名，列出所有目录并使用它们。

## Python 目录

如果我们的 Python 程序中要处理大量的[文件](/python-programming/file-operation)，我们可以将代码安排在不同的目录中，以使事情更易于管理。

目录或文件夹是文件和子目录的集合。 Python 具有`os` [模块](/python-programming/modules)，该模块为我们提供了许多有用的方法来处理目录（以及文件）。

* * *

## 获取当前目录

我们可以使用`os`模块的`getcwd()`方法获得当前的工作目录。

此方法以字符串形式返回当前工作目录。 我们也可以使用`getcwdb()`方法将其作为字节对象获取。

```py
>>> import os

>>> os.getcwd()
'C:\\Program Files\\PyScripter'

>>> os.getcwdb()
b'C:\\Program Files\\PyScripter'
```

多余的反斜杠表示转义序列。`print()`函数将正确渲染此图像。

```py
>>> print(os.getcwd())
C:\Program Files\PyScripter
```

* * *

## 变更目录

我们可以使用`chdir()`方法更改当前工作目录。

我们要更改为的新路径必须作为字符串提供给此方法。 我们可以使用正斜杠`/`或反斜杠`\`来分隔路径元素。

使用反斜杠时，使用转义序列更安全。

```py
>>> os.chdir('C:\\Python33')

>>> print(os.getcwd())
C:\Python33
```

* * *

## 列出目录和文件

可以使用`listdir()`方法检索目录内的所有文件和子目录。

此方法采用一个路径，并返回该路径中的子目录和文件的列表。 如果未指定路径，它将返回当前工作目录中的子目录和文件列表。

```py
>>> 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()`方法创建一个新目录。

此方法采用新目录的路径。 如果未指定完整路径，则会在当前工作目录中创建新目录。

```py
>>> os.mkdir('test')

>>> os.listdir()
['test']
```

* * *

## 重命名目录或文件

`rename()`方法可以重命名目录或文件。

为了重命名任何目录或文件，`rename()`方法采用两个基本参数：旧名称作为第一个参数，新名称作为第二个参数。

```py
>>> os.listdir()
['test']

>>> os.rename('test','new_one')

>>> os.listdir()
['new_one']
```

* * *

## 删除目录或文件

可以使用`remove()`方法删除（删除）文件。

同样，`rmdir()`方法将删除一个空目录。

```py
>>> os.listdir()
['new_one', 'old.txt']

>>> os.remove('old.txt')
>>> os.listdir()
['new_one']

>>> os.rmdir('new_one')
>>> os.listdir()
[]
```

**注意**：`rmdir()`方法只能删除空目录。

为了删除非空目录，我们可以在`shutil`模块内使用`rmtree()`方法。

```py
>>> 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()
[]
```