Heim >Backend-Entwicklung >Python-Tutorial >Python erklärt das OS-Modul und das Shutil-Modul ausführlich
Artikelverzeichnis
shutil
-Module sind die Hauptmethoden für Python, mit Dateien/Verzeichnissen umzugehen. Das OS-Modul bietet eine bequeme Möglichkeit, betriebssystembezogene Funktionen zu nutzen, und das Shutil-Modul ist ein erweitertes Datei-/Verzeichnis-Betriebstool. os
-Modul bietet einige praktische Funktionen zur Verwendung von Betriebssystemressourcen, z. B. das Lesen von Dateien im Ressourcenverzeichnis und das Anzeigen von Dateien unter einem bestimmten Pfad in der Befehlszeile. Alle Inhalte usw.
Bei der Entwicklung von Kompatibilitätscode zur Anpassung an verschiedene Betriebssysteme kann dies leicht durch die Beurteilung des Betriebssystemtyps gelöst werden. import osimport sysprint(os.name) # 返回nt代表Windows,posix代表Linuxprint(sys.platform) # 更详细信息
os
模块和shutil
模块是Python处理文件/目录的主要方式。os模块提供了一种使用操作系统相关功能的便捷方式,shutil模块是一种高级的文件/目录操作工具。
文件的处理
os
模块提供了一些便捷功能来使用操作系统资源,比如读取资源目录下的文件、在命令行查看某路径下文件的所有内容等。
获取系统类型
对代码进行兼容性开发以适应不同操作系统时通过操作系统类型进行判断就可以轻松解决。
import osprint(os.environ)print(os.environ['PATH'])print(os.getenv('PATH'))
获取系统环境
对环境变量进行相关设置时,常常会调用模块environ
模块。os.environ
是以字典的形式返回系统环境变量,要获取具体的属性值,可以用索引,也可以用方法getenv()
:
import os os.system('ping www.baidu.com')os.popen('ping www.baidu.com').read()
执行系统命令
使用os模块system()
方法可以执行shell命令,正常执行会返回0。使用格式是os.system("bash command")
。
在非控制台编写时,system()
只会调用系统命令而不会执行,执行结果可通过popen()
函数返回file
Holen Sie sich das System Umgebung
environ
aufgerufen. os.environ
gibt Systemumgebungsvariablen in Form eines Wörterbuchs zurück. Um bestimmte Attributwerte zu erhalten, können Sie den Index oder die Methode getenv()
verwenden:
import shutil path_1 = r'D:\PycharmProjects\Hello'path_2 = r'D:\PycharmProjects\Hello\shutil-test'new_path = shutil.make_archive(path_2,'zip',path_1)print(new_path)
system()
des Betriebssystems, um Shell-Befehle auszuführen. Bei normaler Ausführung wird 0 zurückgegeben. Das Verwendungsformat ist os.system("bash command")
. 🎜🎜Beim Schreiben ohne Konsole ruft system()
nur Systembefehle auf, führt sie jedoch nicht aus. Die Ausführungsergebnisse können über popen() an <code>file-Funktion. /code>-Objekt wird gelesen und abgerufen. 🎜<pre class="brush:php;toolbar:false">import shutilimport os
shutil.unpack_archive('D:\PycharmProjects\Hello\shutil-test.zip','D:\testdir')print(os.listdir('D:\testdir'))</pre>🎜🎜🎜🎜🎜Betreiben von Verzeichnissen und Dateien🎜🎜🎜🎜Eine der häufigsten Funktionen in der Python-Entwicklung ist die Verwendung des Betriebssystemmoduls zum Betreiben von Verzeichnissen und Dateien. 🎜<table><tbody>
<tr class="firstRow">
<td>Methode</td>
<td>Erklärung</td>
<td>Beispiel</td>
</tr>
<tr>
<td>os.getcwd()</td>
<td>Den aktuellen Verzeichnispfad abrufen</td>
<td><img src="https://img.php.cn/upload/article/000/000/052/ca0594a1c752a5b48b8629b6da5e57ee-3.png" alt="Python erklärt das OS-Modul und das Shutil-Modul ausführlich" ></td>
</tr>
<tr>
<td>os.chdir('Zielpfad') </td>
<td>Ändern Sie die aktuelle Skripttabelle des Inhalts</td>
<td> <img src="https://img.php.cn/upload/article/000/000/052/ca0594a1c752a5b48b8629b6da5e57ee-4.png" alt="Python erklärt das OS-Modul und das Shutil-Modul ausführlich" >
</td>
</tr>
<tr>
<td>os.listdir(path)</td>
<td>Alle Dateien im Verzeichnis auflisten</td>
<td><img src="https://img.php.cn/upload/article/000/000/052/2257413c3eaab8458c7e398adb2e5185-5.png" alt="Python erklärt das OS-Modul und das Shutil-Modul ausführlich" ></td>
</tr>
<tr>
<td>os.mkdir(path)</td>
<td>Ein einzelnes Verzeichnis erstellen</td>
<td rowspan="4"><img src="https://img.php.cn/upload/article/000/000/052/2257413c3eaab8458c7e398adb2e5185-6.png" alt="Python erklärt das OS-Modul und das Shutil-Modul ausführlich" ></td> </tr>
<tr>
<td>os .makedirs (Pfad)</td> <td>Mehrstufige Verzeichnisse erstellen</td>
</tr>
<tr>
<td>os.rmdir(Pfad)</td>
<td>Einstufige leere Verzeichnisse entfernen</td>
</tr>
<tr>
<td>os.removedirs(pfad)</td>
<td>Mehrstufige Verzeichnisse löschen</td>
</tr>
<tr> <td>os.rename("Datei- oder Verzeichnisname","Zielname")</td>
<td>Ein Verzeichnis oder eine Datei umbenennen</td>
<td><img src="https://img.php.cn/upload/article/000/000/052/2257413c3eaab8458c7e398adb2e5185-7.png" alt="Python erklärt das OS-Modul und das Shutil-Modul ausführlich" ></td>
</tr>
<tr>
<td>os.path.abspath()</td>
<td>Den absoluten Pfad abrufen</td>
<td><img src="https://img.php.cn/upload/article/000/000/052/727edec0e2b593619c71184cbdb07269-8.png" alt="Python erklärt das OS-Modul und das Shutil-Modul ausführlich" ></td>
</tr>
<tr> <td>os.path.split(path)</td> <td>Zerlegen Sie den Pfad in (Ordner, Dateiname)<br>Wenn das letzte Zeichen der Pfadzeichenfolge ist, dann hat nur der Ordnerteil einen Wert; <br>Wenn es keinen in der Pfadzeichenfolge gibt , nur der Dateinamensteil hat einen Wert; <br>Wenn der Pfad die Zeichenfolge hat und nicht mehr der letzte ist, dann haben die Ordner- und Dateinamen Werte. + os.path.basename(path)</td>
<td rowspan="2">Den Dateinamen im Pfad abrufen<img src="https://img.php.cn/upload/article/000/000/052/727edec0e2b593619c71184cbdb07269-9.png" alt="Python erklärt das OS-Modul und das Shutil-Modul ausführlich" >
</td>
</tr>
<tr>os.path.exists(path)<td></td>Bestimmen Sie, ob die Datei oder der Ordner existiert<td></td>
</tr>
<tr>
<td></td>
<td>os.path.isfile ( path)</td>
<td rowspan="2">Bestimmen Sie, ob der Pfad eine Datei ist<img src="https://img.php.cn/upload/article/000/000/052/878969ec0f4864a696866bfa59dc25f3-10.png" alt="Python erklärt das OS-Modul und das Shutil-Modul ausführlich" >
</td>
</tr>
<tr>
<td></td>
<td>os.path.isdir(path)</td>
</tr>Bestimmen Sie, ob der Pfad ein Verzeichnis ist<tr>
<td></td>
<td></td>
<td>
<img src="https://img.php.cn/upload/article/000/000/052/563162abbfc09ebe37d23aa454253a43-11.png" alt="Python erklärt das OS-Modul und das Shutil-Modul ausführlich" >os.path.getsize(path ). oder Zeitpunkt des letzten Zugriffs auf den Ordner</td>
</tr>
<tr>
<td></td>
<td></td>os.path.getmtime(path)<td>
<img src="https://img.php.cn/upload/article/000/000/052/563162abbfc09ebe37d23aa454253a43-12.png" alt="Python erklärt das OS-Modul und das Shutil-Modul ausführlich" >Erhalten Sie die letzte Änderungszeit einer Datei oder eines Ordners</td>
</tr>
<tr>
<td></td>
<td></td>os.sep()<td>
<img src="https://img.php.cn/upload/article/000/000/052/fbf7d5ceb7c9f1feb73a54fbf8c7b2d6-13.png" alt="Python erklärt das OS-Modul und das Shutil-Modul ausführlich" >Pfadtrennzeichen</td>
</tr> ?? <tr> <td>
<blockquote><p>(<span style="text-decoration:line-through;">插播反爬信息</span> )博主CSDN地址:https://wzlodq.blog.csdn.net/</p></blockquote>
<p><strong>文件和目录高级处理</strong></p>
<blockquote><p>相比<code>os
模块,shutil
模块用于文件和目录的高级处理,提供了支持文件赋值、移动、删除、压缩和解压等功能。
复制文件
shutil
模块的主要作用是赋值文件,大概有以下七种实现:
shutil.copyfileobj(file1,file2)
覆盖复制
将file1的内容覆盖file2,file1、file2表示打开的文件对象。
shutil.copyfile(file1,file2)
覆盖复制
也是覆盖,但是无须打开文件,直接用文件名进行覆盖(其源码还是调用的copyfileobj)。
shutil.copymode(file1,file2)
权限复制
仅复制文件权限,不更改文件内容、组和用户,无返回对象。
shutil.copystart(file1,file2)
状态复制
复制文件的所有状态信息,包括权限、组、用户和时间等,无返回对象。
shutil.copy(file1,file2)
内容和权限复制
复制文件的内容和权限,相当于先执行了copyfile再执行了copysmode。
shutil.copy2(file1,file2)
内容和权限复制
复制文件的内容及所有状态信息,相当于先执行了copyfile再执行了copystart。
shutil.copytree()
递归复制
递归地复制文件内容及状态信息
移动文件
使用函数shutil.move()
函数可以递归地移动文件或重命名,并返回目标,若目标是现有目录则src再当前目录移动;若目标已经存在且不是目录,则可能会被覆盖。
读取压缩及归档压缩文件
使用函数shutil.make_archive()
创建归档文件,并返回归档后的名称。
语法如下:shutil.make_archive(base_name,format[,root_dir[,base_dir[,verbose[,dry_run[,owner[,group[,logger]]]]]]])
import shutil path_1 = r'D:\PycharmProjects\Hello'path_2 = r'D:\PycharmProjects\Hello\shutil-test'new_path = shutil.make_archive(path_2,'zip',path_1)print(new_path)
解压文件
使用函数shutil.unpack_archive(filename[,extract_dir[,format]])
分析拆档。
import shutilimport os shutil.unpack_archive('D:\PycharmProjects\Hello\shutil-test.zip','D:\\testdir')print(os.listdir('D:\\testdir'))
小结
需要注意的是不同的操作系统中,路径分隔符不一样,在文件处理时需要考虑。也可以使用os.sep()
来替代文件分隔符,因为操作系统而造成的程序异常。此外处理文件时往往需要注意文件权限,还有注意文件和文件夹的区别,使用递归等。
Python系列博客持续更新中
大量免费学习推荐,敬请访问python教程(视频)
Das obige ist der detaillierte Inhalt vonPython erklärt das OS-Modul und das Shutil-Modul ausführlich. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!