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:所有權限
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中文網其他相關文章!