Python 目录和文件管理
Python 目录和文件管理
在本教程中,您将学习 Python 中的文件和目录管理,即创建目录,重命名,列出所有目录并使用它们。
Python 目录
如果我们的 Python 程序中要处理大量的文件,我们可以将代码安排在不同的目录中,以使事情更易于管理。
目录或文件夹是文件和子目录的集合。 Python 具有os
模块,该模块为我们提供了许多有用的方法来处理目录(以及文件)。
获取当前目录
我们可以使用os
模块的getcwd()
方法获得当前的工作目录。
此方法以字符串形式返回当前工作目录。 我们也可以使用getcwdb()
方法将其作为字节对象获取。
1 2 3 4 5 6 7 |
<span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-k">import</span> <span class="pl-s1">os</span> <span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">os</span>.<span class="pl-en">getcwd</span>() <span class="pl-s">'C:<span class="pl-cce">\\</span>Program Files<span class="pl-cce">\\</span>PyScripter'</span> <span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">os</span>.<span class="pl-en">getcwdb</span>() <span class="pl-s">b'C:<span class="pl-cce">\\</span>Program Files<span class="pl-cce">\\</span>PyScripter'</span> |
多余的反斜杠表示转义序列。print()
函数将正确渲染此图像。
1 2 |
<span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-en">print</span>(<span class="pl-s1">os</span>.<span class="pl-en">getcwd</span>()) <span class="pl-v">C</span>:\P<span class="pl-s1">rogram</span> <span class="pl-v">Files</span>\P<span class="pl-s1">yScripter</span> |
变更目录
我们可以使用chdir()
方法更改当前工作目录。
我们要更改为的新路径必须作为字符串提供给此方法。 我们可以使用正斜杠/
或反斜杠\
来分隔路径元素。
使用反斜杠时,使用转义序列更安全。
1 2 3 4 |
<span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">os</span>.<span class="pl-en">chdir</span>(<span class="pl-s">'C:<span class="pl-cce">\\</span>Python33'</span>) <span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-en">print</span>(<span class="pl-s1">os</span>.<span class="pl-en">getcwd</span>()) <span class="pl-v">C</span>:\P<span class="pl-s1">ython33</span> |
列出目录和文件
可以使用listdir()
方法检索目录内的所有文件和子目录。
此方法采用一个路径,并返回该路径中的子目录和文件的列表。 如果未指定路径,它将返回当前工作目录中的子目录和文件列表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-en">print</span>(<span class="pl-s1">os</span>.<span class="pl-en">getcwd</span>()) <span class="pl-v">C</span>:\P<span class="pl-s1">ython33</span> <span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">os</span>.<span class="pl-en">listdir</span>() [<span class="pl-s">'DLLs'</span>, <span class="pl-s">'Doc'</span>, <span class="pl-s">'include'</span>, <span class="pl-s">'Lib'</span>, <span class="pl-s">'libs'</span>, <span class="pl-s">'LICENSE.txt'</span>, <span class="pl-s">'NEWS.txt'</span>, <span class="pl-s">'python.exe'</span>, <span class="pl-s">'pythonw.exe'</span>, <span class="pl-s">'README.txt'</span>, <span class="pl-s">'Scripts'</span>, <span class="pl-s">'tcl'</span>, <span class="pl-s">'Tools'</span>] <span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">os</span>.<span class="pl-en">listdir</span>(<span class="pl-s">'G:<span class="pl-cce">\\</span>'</span>) [<span class="pl-s">'$RECYCLE.BIN'</span>, <span class="pl-s">'Movies'</span>, <span class="pl-s">'Music'</span>, <span class="pl-s">'Photos'</span>, <span class="pl-s">'Series'</span>, <span class="pl-s">'System Volume Information'</span>] |
创建新目录
我们可以使用mkdir()
方法创建一个新目录。
此方法采用新目录的路径。 如果未指定完整路径,则会在当前工作目录中创建新目录。
1 2 3 4 |
<span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">os</span>.<span class="pl-en">mkdir</span>(<span class="pl-s">'test'</span>) <span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">os</span>.<span class="pl-en">listdir</span>() [<span class="pl-s">'test'</span>] |
重命名目录或文件
rename()
方法可以重命名目录或文件。
为了重命名任何目录或文件,rename()
方法采用两个基本参数:旧名称作为第一个参数,新名称作为第二个参数。
1 2 3 4 5 6 7 |
<span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">os</span>.<span class="pl-en">listdir</span>() [<span class="pl-s">'test'</span>] <span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">os</span>.<span class="pl-en">rename</span>(<span class="pl-s">'test'</span>,<span class="pl-s">'new_one'</span>) <span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">os</span>.<span class="pl-en">listdir</span>() [<span class="pl-s">'new_one'</span>] |
删除目录或文件
可以使用remove()
方法删除(删除)文件。
同样,rmdir()
方法将删除一个空目录。
1 2 3 4 5 6 7 8 9 10 |
<span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">os</span>.<span class="pl-en">listdir</span>() [<span class="pl-s">'new_one'</span>, <span class="pl-s">'old.txt'</span>] <span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">os</span>.<span class="pl-en">remove</span>(<span class="pl-s">'old.txt'</span>) <span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">os</span>.<span class="pl-en">listdir</span>() [<span class="pl-s">'new_one'</span>] <span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">os</span>.<span class="pl-en">rmdir</span>(<span class="pl-s">'new_one'</span>) <span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">os</span>.<span class="pl-en">listdir</span>() [] |
注意:rmdir()
方法只能删除空目录。
为了删除非空目录,我们可以在shutil
模块内使用rmtree()
方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">os</span>.<span class="pl-en">listdir</span>() [<span class="pl-s">'test'</span>] <span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">os</span>.<span class="pl-en">rmdir</span>(<span class="pl-s">'test'</span>) <span class="pl-v">Traceback</span> (<span class="pl-s1">most</span> <span class="pl-s1">recent</span> <span class="pl-s1">call</span> <span class="pl-s1">last</span>): ... <span class="pl-v">OSError</span>: [<span class="pl-v">WinError</span> <span class="pl-c1">145</span>] <span class="pl-v">The</span> <span class="pl-s1">directory</span> <span class="pl-c1">is</span> <span class="pl-c1">not</span> <span class="pl-s1">empty</span>: <span class="pl-s">'test'</span> <span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-k">import</span> <span class="pl-s1">shutil</span> <span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">shutil</span>.<span class="pl-en">rmtree</span>(<span class="pl-s">'test'</span>) <span class="pl-c1">>></span><span class="pl-c1">></span> <span class="pl-s1">os</span>.<span class="pl-en">listdir</span>() [] |
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!