首頁 >後端開發 >Python教學 >Python的OS模組的使用方法及範例

Python的OS模組的使用方法及範例

PHPz
PHPz轉載
2023-04-22 22:19:172973瀏覽

Python的os模組是用於與作業系統互動的標準庫之一,它提供了許多有用的函數和變量,以便處理檔案和目錄。以下是一些常見的os模組函數的用法:

1.取得目前工作目錄:

import os
cwd = os.getcwd()
print(cwd)

2.切換目前工作目錄:

import os
os.chdir('/path/to/new/directory')

3.列出目錄中的所有檔案和子目錄:

import os
files = os.listdir('/path/to/directory')
print(files)

4.檢查給定的路徑是否為目錄:

import os
path = '/path/to/directory'
if os.path.isdir(path):
    print("It's a directory")
else:
    print("It's not a directory")

5.檢查給定的路徑是否為檔案:

import os
path = '/path/to/file'
if os.path.isfile(path):
    print("It's a file")
else:
    print("It's not a file")

6.取得檔案的大小(以位元組為單位):

import os
path = '/path/to/file'
size = os.path.getsize(path)
print(size)

7.檢查給定的路徑是否存在:

import os
path = '/path/to/file_or_directory'
if os.path.exists(path):
    print("It exists")
else:
    print("It doesn't exist")

8.建立新目錄:

import os
path = '/path/to/new/directory'
os.mkdir(path)

9.遞歸建立新目錄(如果目錄不存在):

import os
path = '/path/to/new/directory'
os.makedirs(path, exist_ok=True)

10.刪除檔案或空白目錄:

import os
path = '/path/to/file_or_directory'
os.remove(path)

11.遞迴刪除目錄及其內容:

import os
path = '/path/to/directory'
os.system('rm -rf ' + path)

其它一些便捷用法:

12.os.path.splitext() 方法是將一個路徑分割成檔案名稱和副檔名兩部分。它會以檔案名稱中的最後一個 "." 作為分隔符,將檔案名稱和副檔名分開。例如,如果檔案路徑為 "/path/to/file.txt",則 os.path.splitext() 方法會傳回一個元組 ("/path/to/file", ".txt")。

要注意的是,如果檔案名稱中沒有 ".",則傳回的副檔名為空字串。如果檔案名稱以 "." 開頭,則視為無副檔名文件,os.path.splitext() 方法將會傳回 (檔案路徑, '')。

以下是一個範例:

import os
path = '/path/to/file.txt'
file_name, ext = os.path.splitext(path)
print('文件名为:', file_name)
print('扩展名为:', ext)

輸出結果為:

檔名: /path/to/file
副檔名為: .txt

13.設定檔案權限:

import os
os.chmod('/path/to/file', 0o777) # 设置读、写、执行权限

os.chmod() 方法可以用來修改檔案或目錄的存取權限。它接受兩個參數:檔案路徑和新的權限模式。權限模式可以使用八進制數表示,每個位元表示不同的權限。

以下是一些權限模式的範例:

  • 0o400:只讀權限

  • 0o200:寫入權限

  • 0o100:執行權限

  • 0o700:所有權限

##14.取得CPU數量:

import os
cpu_count = os.cpu_count()
print('CPU数量为:', cpu_count)

要注意的是,os.cpu_count() 傳回的CPU數量是實體CPU核心數,不包含超執行緒技術的虛擬核心。在具有超執行緒技術的系統中,每個實體CPU核心都會被劃分為兩個虛擬核心,因此os.cpu_count()方法可能會傳回比實際CPU核心數以上的數量。

另外,os.cpu_count()方法在不同的作業系統上可能會有不同的實作。在某些作業系統上,它可能只會傳回邏輯CPU核心數,而不是實體CPU核心數。因此,在使用該方法時,最好查閱相關的文件以獲取更多資訊。

15.啟動新進程:

import os
os.system('notepad.exe')

os.system() 方法可以在作業系統上執行一個指令,並傳回指令的退出狀態碼。它的參數是一個字串類型的命令,可以是任何有效的系統命令。

以下是一個範例,示範如何使用os.system()方法來執行一個簡單的指令:

import os
os.system('echo "Hello, World!"')

上述程式碼將輸出Hello, World!字串,並傳回指令的退出狀態碼(通常為0表示成功)。

要注意的是,os.system() 方法會阻塞目前進程,直到指令執行完成。如果希望在執行指令時不阻塞目前進程,可以考慮使用subprocess模組中的其他方法,如subprocess.Popen()。

以下是另一個範例,示範如何使用os.system()方法來執行一個複雜的指令,例如在Linux系統上使用wget下載一個檔案:

import os
url = 'https://example.com/file.zip'
output_dir = '/path/to/output'
command = f'wget {url} -P {output_dir}'
os.system(command)

上述程式碼會將url參數指定的檔案下載到output_dir參數指定的目錄中,並傳回指令的退出狀態碼。

16.os.environ:這是一個包含目前環境變數的字典。可以使用os.environ[key]來取得特定環境變數的值。

17.os.exec*():這些方法允許Python程式在目前處理程序中執行其他程序,取代目前程序。例如,os.execv() 方法可以使用指定的參數清單執行一個程序,取代目前程序。

18.os.fork():這個方法可以在Unix或Linux作業系統上建立一個子進程,用於並行執行程式。子進程將複製父進程的所有記憶體內容,包括程式碼、資料和堆疊等,因此可以在父進程的基礎上繼續執行程式。

19.os.kill():這個方法用來向指定程序發送訊號。可以使用os.kill(pid, signal)方法向指定的程序發送指定的訊號。常用的訊號包括SIGINT(中斷訊號)、SIGTERM(終止訊號)和SIGKILL(強制終止訊號)等。

20.os.pipe():這個方法可以建立一個管道,用於在進程之間進行通訊。 os.pipe()方法將傳回兩個檔案描述符,一個用於讀取管道數據,另一個用於寫入管道數據。

21.os.wait():這個方法可以等待子程序的結束,然後回傳子程序的狀態碼。可以使用os.waitpid(pid, options)方法等待指定的進程結束,並傳回進程的狀態碼。

22.os模块可以用来操作文件路径。例如,os.path.join(path, *paths)可以将多个路径拼接成一个完整路径,os.path.abspath(path)可以将相对路径转换为绝对路径,os.path.split(path)可以将路径分割成目录和文件名。

23.遍历目录树

import os
def list_files(path):
    for root, dirs, files inos.walk(path):
        for file in files:
            print(os.path.join(root, file))
list_files('.')

这段代码可以遍历当前工作目录及其子目录下的所有文件,并打印出它们的完整路径。

os.walk()是os模块中一个非常有用的函数,用于遍历指定目录及其子目录下的所有文件和目录。它返回一个三元组(root, dirs, files),其中root是当前目录的路径,dirs是当前目录下的子目录列表,files是当前目录下的文件列表。下面是一个os.walk()的详细解释和示例:

for root, dirs, files in os.walk(top, topdown=True, onerror=None, followlinks=False):
    # Do something with root, dirs, and files

top是指定的目录路径,可以是相对路径或绝对路径。

  • topdown是一个布尔值,表示遍历时是否先遍历当前目录,再遍历子目录。如果为True(默认值),则先遍历当前目录,再遍历子目录;如果为False,则先遍历子目录,再遍历当前目录。

  • onerror是一个可选的错误处理函数,如果在遍历过程中出现错误,则会调用这个函数。

  • followlinks是一个布尔值,表示是否跟随符号链接。如果为True,则会跟随符号链接遍历目录;如果为False(默认值),则会忽略符号链接。

在遍历过程中,os.walk()会依次遍历指定目录及其子目录下的所有文件和目录,并返回当前目录的路径、子目录列表和文件列表。可以通过遍历返回的三元组来处理目录和文件。例如,可以使用下面的代码列出指定目录下的所有文件和子目录:

import os
 
def list_files_and_dirs(path):
    for root, dirs, files in os.walk(path):
        print(f'Directory: {root}')
        for file in files:
            print(f'  File: {os.path.join(root, file)}')
        for dir in dirs:
            print(f'  Subdirectory: {os.path.join(root, dir)}')
 
list_files_and_dirs('.')

这段代码会遍历当前工作目录及其子目录下的所有文件和目录,并输出相应的信息。

需要注意的是,os.walk()只会遍历当前目录及其子目录下的文件和目录,不会遍历符号链接所指向的文件或目录。如果需要遍历符号链接所指向的文件或目录,需要设置followlinks=True。

以上是Python的OS模組的使用方法及範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除