Python?中OS?module的使用詳解
Python的os模塊是用于與操作系統(tǒng)進行交互的標準庫之一,它提供了許多有用的函數(shù)和變量,以便處理文件和目錄。下面是一些常見的os模塊函數(shù)的用法:
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.獲取文件的大小(以字節(jié)為單位):
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.創(chuàng)建新目錄:
import os path = '/path/to/new/directory' os.mkdir(path)
9.遞歸創(chuàng)建新目錄(如果目錄不存在):
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.遞歸刪除目錄及其內(nèi)容:
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)
輸出結(jié)果為:
文件名為: /path/to/file
擴展名為: .txt
13.設置文件權(quán)限:
import os os.chmod('/path/to/file', 0o777) # 設置讀、寫、執(zhí)行權(quán)限
os.chmod() 方法可以用來修改文件或目錄的訪問權(quán)限。它接受兩個參數(shù):文件路徑和新的權(quán)限模式。權(quán)限模式可以使用八進制數(shù)表示,每個位表示不同的權(quán)限。
以下是一些權(quán)限模式的示例:
- 0o400:只讀權(quán)限
- 0o200:寫入權(quán)限
- 0o100:執(zhí)行權(quán)限
- 0o700:所有權(quán)限
14.獲取CPU數(shù)量:
import os cpu_count = os.cpu_count() print('CPU數(shù)量為:', cpu_count)
需要注意的是,os.cpu_count() 返回的CPU數(shù)量是物理CPU核心數(shù),并不包括超線程技術(shù)的虛擬核心。在具有超線程技術(shù)的系統(tǒng)中,每個物理CPU核心都會被劃分為兩個虛擬核心,因此os.cpu_count()方法可能會返回比實際CPU核心數(shù)多的數(shù)量。
另外,os.cpu_count()方法在不同的操作系統(tǒng)上可能會有不同的實現(xiàn)。在某些操作系統(tǒng)上,它可能只返回邏輯CPU核心數(shù),而不是物理CPU核心數(shù)。因此,在使用該方法時,最好查閱相關(guān)的文檔以獲取更多信息。
15.啟動新進程:
import os os.system('notepad.exe')
os.system() 方法可以在操作系統(tǒng)上執(zhí)行一個命令,并返回命令的退出狀態(tài)碼。它的參數(shù)是一個字符串類型的命令,可以是任何有效的系統(tǒng)命令。
以下是一個示例,演示了如何使用os.system()方法來執(zhí)行一個簡單的命令:
import os os.system('echo "Hello, World!"')
上述代碼將輸出Hello, World!字符串,并返回命令的退出狀態(tài)碼(通常為0表示成功)。
需要注意的是,os.system() 方法會阻塞當前進程,直到命令執(zhí)行完成。如果希望在執(zhí)行命令時不阻塞當前進程,可以考慮使用subprocess模塊中的其他方法,如subprocess.Popen()。
以下是另一個示例,演示了如何使用os.system()方法來執(zhí)行一個復雜的命令,比如在Linux系統(tǒng)上使用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參數(shù)指定的文件下載到output_dir參數(shù)指定的目錄中,并返回命令的退出狀態(tài)碼。
16.os.environ:這是一個包含當前環(huán)境變量的字典??梢允褂胦s.environ[key]獲取特定環(huán)境變量的值。
17.os.exec*():這些方法允許Python程序在當前進程中執(zhí)行其他程序,取代當前進程。例如,os.execv() 方法可以使用指定的參數(shù)列表執(zhí)行一個程序,取代當前進程。
18.os.fork():這個方法可以在Unix或Linux操作系統(tǒng)上創(chuàng)建一個子進程,用于并行執(zhí)行程序。子進程將復制父進程的所有內(nèi)存內(nèi)容,包括代碼、數(shù)據(jù)和堆棧等,因此可以在父進程的基礎(chǔ)上繼續(xù)執(zhí)行程序。
19.os.kill():這個方法用于向指定進程發(fā)送信號??梢允褂胦s.kill(pid, signal)方法向指定的進程發(fā)送指定的信號。常用的信號包括SIGINT(中斷信號)、SIGTERM(終止信號)和SIGKILL(強制終止信號)等。
20.os.pipe():這個方法可以創(chuàng)建一個管道,用于在進程之間進行通信。os.pipe()方法將返回兩個文件描述符,一個用于讀取管道數(shù)據(jù),另一個用于寫入管道數(shù)據(jù)。
21.os.wait():這個方法可以等待子進程的結(jié)束,然后返回子進程的狀態(tài)碼??梢允褂胦s.waitpid(pid, options)方法等待指定的進程結(jié)束,并返回進程的狀態(tài)碼。
22.os模塊可以用來操作文件路徑。例如,os.path.join(path, *paths)可以將多個路徑拼接成一個完整路徑,os.path.abspath(path)可以將相對路徑轉(zhuǎn)換為絕對路徑,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模塊中一個非常有用的函數(shù),用于遍歷指定目錄及其子目錄下的所有文件和目錄。它返回一個三元組(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是一個可選的錯誤處理函數(shù),如果在遍歷過程中出現(xiàn)錯誤,則會調(diào)用這個函數(shù)。
- 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。
到此這篇關(guān)于Python 中OS module的使用詳解的文章就介紹到這了,更多相關(guān)Python OS module使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 實現(xiàn)文件的遞歸拷貝實現(xiàn)代碼
今天翻電腦時突然發(fā)現(xiàn)有個存了很多照片和視頻的文件夾,想起來是去年換手機(流行的小5)時拷出來的??戳藥讖堈掌?,往事又一幕幕的浮現(xiàn)在腦海,好吧,我是個感性的人2012-08-08關(guān)于python3安裝pip及requests庫的導入問題
小編最近快畢業(yè)了,閑著無事學習下python的內(nèi)容在學習到requsets庫的導入問題時遇到一些問題,通過查找相關(guān)資料問題順利解決,今天小編把問題解決思路及注意事項分享給大家供大家參考學習2021-05-05關(guān)于python3的ThreadPoolExecutor線程池大小設置
這篇文章主要介紹了關(guān)于python3的ThreadPoolExecutor線程池大小設置,線程池的理想大小取決于被提交任務的類型以及所部署系統(tǒng)的特性,需要的朋友可以參考下2023-04-04pytorch 搭建神經(jīng)網(wǎng)路的實現(xiàn)
這篇文章主要介紹了pytorch 搭建神經(jīng)網(wǎng)路,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08