ython自帶的os模塊提供了許多與操作系統(tǒng)交互的函數(shù),適配多種操作系統(tǒng),比如windows,mac,linux等,比如常用路徑操作、進(jìn)程管理、環(huán)境參數(shù)等都可通過(guò)os模塊實(shí)現(xiàn)。
以下是自帶的os.py中的前面一部分代碼。
—— os.name為'posix'或'nt'
—— os.curdir是一個(gè)表示當(dāng)前目錄的字符串(總是'.')
—— os.pardir是一個(gè)表示父目錄的字符串(總是'..')
—— os.sep是路徑分隔符('/'或'\')
—— os.extsep是擴(kuò)展分隔符(總是'.')
—— os.altsep是備用路徑名分隔符(None或'/')
—— os.pathsep是$PATH等中使用的組件分隔符
—— os.linesep是文本文件中的行分隔符('\r'或'\n'或'\r\n')
—— os.defpath為可執(zhí)行文件的默認(rèn)搜索路徑
—— os.devnull為空設(shè)備的文件路徑('/dev/null'等)
其中os.name意味著操作系統(tǒng)類型,'posix'指的是類Unix操作系統(tǒng),如Linux和Mac OS,而'nt'則指的是Windows。
上面沒(méi)有提到的os.path是os 模塊中的一個(gè)子模塊,它提供了許多用于處理文件路徑的函數(shù)。這些函數(shù)對(duì)于跨平臺(tái)編程特別有用,因?yàn)樗鼈儠?huì)根據(jù)操作系統(tǒng)的不同來(lái)自動(dòng)處理路徑。
1 os.path.abspath(path): 返回指定文件的絕對(duì)路徑。
print(os.path.abspath('dir1/dir2'))
/Users/htsc/Desktop/dir1/dir2
2 os.path.isabs(path): 檢查路徑是否為絕對(duì)路徑。
print(os.path.isabs('1.txt'))
False
print(os.path.isabs('/Users/htsc/Desktop/dir1/dir2/1.txt'))
True
3 os.path.basename(path): 返回路徑中的文件名。
返回給定路徑的最后一個(gè)路徑,可能是文件夾或者文件
print(os.path.basename('dir1/dir2'))
print(os.path.basename('dir1/dir2/1.txt'))
dir2
1.txt
4 os.path.dirname(path): 返回路徑中的目錄名。
返回給定路徑中除了最后一個(gè)路徑之外的其他目錄
print(os.path.dirname('dir1/dir2'))
print(os.path.dirname('dir1/dir2/1.txt'))
dir1
dir1/dir2
5 os.path.exists(path): 檢查路徑是否存在。
print(os.path.exists('dir1/dir2/1.txt'))
print(os.path.exists('dir1'))
False
True
6 os.path.isfile(path): 檢查路徑是否是一個(gè)文件。
print(os.path.isfile('dir1/dir2/1.txt'))
True
7 os.path.isdir(path): 檢查路徑是否是一個(gè)目錄。
print(os.path.isdir('dir1/dir2/1.txt'))
False
print(os.path.isdir('dir1/dir2'))
True
8 os.path.join(path1[, path2[, ...]]): 連接一個(gè)或多個(gè)路徑
print(os.path.join('dir1/dir2','1.txt'))
dir1/dir2/1.txt
9 os.path.normpath(path): 規(guī)范化路徑。
消除路徑名中的符號(hào)鏈接、冗余分隔符和“.”、“..”組件。
比如路徑中有一個(gè)點(diǎn)‘.’(上一層目錄)或者兩個(gè)點(diǎn)‘..’(上兩層目錄)
print(os.path.normpath('dir1/./1.txt'))
dir1/1.txt
print(os.path.normpath('dir1/../1.txt'))
1.txt
os.path.relpath(path): 同os.path.normalpath使用,不同的是會(huì)打印絕對(duì)路徑。
print(os.path.realpath('dir1/../1.txt'))
/Users/htsc/Desktop/1.txt
10 os.path.split(path): 將路徑分割為目錄和文件名(返回一個(gè)元組tuple)
print(os.path.split('dir1/dir2/1.txt'))
('dir1/dir2', '1.txt')
11 os.path.splitext(path): 將路徑分割為文件名和擴(kuò)展名(返回一個(gè)元組tuple)。
print(os.path.splitext('dir1/dir2/1.txt'))
('dir1/dir2/1', '.txt')
print(os.path.splitext('1.txt'))
('1', '.txt')
12 os.path.getsize(path): 返回指定文件的大小(以字節(jié)byte為單位)。
print(os.path.getsize('/Users/htsc/Desktop/dir1/dir2/1.txt'))
81
13 os.path.samefile(path1, path2): 判斷兩個(gè)路徑名是否指向同一個(gè)文件或目錄。
print(os.path.samefile('dir1/dir2/1.txt', '/Users/htsc/Desktop/dir1/dir2/1.txt'))
True
14 os.path.commonprefix(list): 返回列表(包含多個(gè)路徑)中所有路徑的公共前綴。
print(os.path.commonprefix(['/Users/htsc/Desktop/dir1/dir1/dir/2.txt', '/Users/htsc/Desktop/dir1/dio/1.txt']))
/Users/htsc/Desktop/dir1/di
15 os.path.commonpath(paths) 返回列表(包含多個(gè)路徑)的最長(zhǎng)的上級(jí)目錄
print(os.path.commonpath(['/Users/htsc/Desktop/dir1/../2.txt', '/Users/htsc/Desktop/dir1/dio/1.txt']))
/Users/htsc/Desktop/dir1
16 os.path.splitdrive(path): 在 Windows 上,將路徑分割為驅(qū)動(dòng)器標(biāo)識(shí)符(比如‘C:\’)和路徑的其余部分。在 Unix或者mac系統(tǒng) 上,返回空字符串和完整的路徑,因?yàn)闆](méi)有驅(qū)動(dòng)器標(biāo)識(shí)符。
print(os.path.splitdrive('/Users/htsc/Desktop/dir1/dir1/dir/2.txt'))
('', '/Users/htsc/Desktop/dir1/dir1/dir/2.txt')
17 os.path.sep 表示路徑分隔符
路徑分割符,windows和mac上是‘/’
print(os.path.sep)
/
共勉: 東漢·班固《漢書(shū)·枚乘傳》:“泰山之管穿石,單極之綆斷干。水非石之鉆,索非木之鋸,漸靡使之然也。”
-----指水滴不斷地滴,可以滴穿石頭;
-----比喻堅(jiān)持不懈,集細(xì)微的力量也能成就難能的功勞。
----感謝讀者的閱讀和學(xué)習(xí),謝謝大家。
如果你剛開(kāi)始在Windows 10上使用命令提示符,你需要知道如何更改目錄。
隨著你對(duì)Windows 10上的命令提示符越來(lái)越熟悉,你需要學(xué)習(xí)的第一件事是如何更改操作系統(tǒng)文件系統(tǒng)中的目錄。有幾種方法可以做到這一點(diǎn),所以我們將帶你了解它們。
注意:本文專門討論了命令提示符,但方法也適用于PowerShell。
首先,在Windows搜索欄中鍵入“cmd”以打開(kāi)命令提示符,然后從搜索結(jié)果中選擇“命令提示符”。
打開(kāi)命令提示符后,你就可以更改目錄了。
使用拖放方法更改目錄
如果要在命令提示符中打開(kāi)的文件夾在桌面上,或者已經(jīng)在文件資源管理器中打開(kāi),則可以快速更改到該目錄。鍵入cd,然后鍵入空格,將文件夾拖放到窗口中,然后按回車鍵。
切換到的目錄將反映在命令行中。
在命令提示符下更改目錄
打開(kāi)文件資源管理器并進(jìn)行拖放操作并不總是很方便。這就是為什么你也可以在命令提示符下鍵入命令來(lái)更改目錄的原因。
例如,假設(shè)你在用戶文件夾中,并且在下一個(gè)文件路徑中有一個(gè)“Documents”目錄。你可以在命令提示符中鍵入以下命令以切換到該目錄:
cd Documents
注意,只有當(dāng)你處于當(dāng)前文件結(jié)構(gòu)中時(shí),這才有效。在我們的例子中,應(yīng)該是(用戶文件夾)>Documents。在我們當(dāng)前的目錄中,我們將無(wú)法使用此方法跳轉(zhuǎn)到下兩級(jí)嵌套的目錄。
所以,假設(shè)我們目前在用戶文件夾中,想要轉(zhuǎn)到嵌套在“Documents”中的“How-To Geek”文件夾。如果我們?cè)噲D直接跳到“How-To Geek”而不首先轉(zhuǎn)到“文檔”,我們會(huì)得到下圖所示的錯(cuò)誤。
現(xiàn)在,讓我們一次處理一個(gè)目錄。正如我們之前提到的,我們目前在我們的用戶文件夾中。我們?cè)诿钐崾痉墟I入cd Documents以訪問(wèn)“Documents”。
我們現(xiàn)在在“Documents”文件夾中。要向下移動(dòng)到另一個(gè)級(jí)別,我們?cè)诿钚兄墟I入cd,然后鍵入該目錄的名稱。
現(xiàn)在,假設(shè)我們回到用戶文件夾中,希望跳過(guò)額外的步驟,向下跳兩個(gè)目錄。在我們的案例中,這將是我們的“How-To Geek”文件夾。我們鍵入以下命令:
cd Documents\How-To Geek
這允許我們用一個(gè)命令移動(dòng)兩個(gè)目錄級(jí)別。
如果你轉(zhuǎn)到錯(cuò)誤的目錄并想要返回,請(qǐng)鍵入以下命令:
cd ..
這允許你向上移動(dòng)一個(gè)級(jí)別。
如果要返回兩個(gè)目錄,可以使用..的多個(gè)實(shí)例在一起,讓我們使用C:\Users\Equinox\Documents\How-To Geek中的示例。運(yùn)行cd..會(huì)將目錄更改為“C:\Users\Equinox\Documents”。但如果我們想一直返回到我們的用戶文件夾呢?只需輸入cd ..\..,如果你想回到三個(gè)目錄,使用...\..\..,以此類推。
在命令提示符下更改驅(qū)動(dòng)器
所以,你現(xiàn)在可以熟練地在一個(gè)驅(qū)動(dòng)器內(nèi)移動(dòng),但如果你的電腦有多個(gè)驅(qū)動(dòng)器怎么辦?這只需要對(duì)你已經(jīng)熟悉的cd命令進(jìn)行一個(gè)小的調(diào)整。輸入cd /D (LETTER):,其中(LETTER)是要切換到的驅(qū)動(dòng)器的字母。讓我們以J:\驅(qū)動(dòng)器為例,但它可以是任何東西,這取決于系統(tǒng)的設(shè)置方式。
cd /D J:
如果你想更有效地更改目錄,請(qǐng)?jiān)诿钚兄墟I入cd,然后按Tab。每次按Tab,它都會(huì)按字母順序(先是特殊字符,然后是數(shù)字,然后是字母)循環(huán)瀏覽當(dāng)前目錄中的文件夾。
如果你想縮小范圍,可以鍵入cd,后跟目錄的第一個(gè)字母,然后多次按Tab鍵,直到出現(xiàn)正確的目錄。如果鍵入所需目錄的前幾個(gè)字母,并且這些字母對(duì)于所需文件夾是唯一的,則可以按Tab鍵自動(dòng)完成目錄名。
讓我們假設(shè)你在一個(gè)文件夾中有目錄ABCDEFHIJK,ROC1,ROC2和ROC3。如果你鍵入cd A并按Tab鍵,它將自動(dòng)填充cd ABCDEFHIJK。如果你鍵入cd R、cd RO或cd ROC,它將在ROC1、ROC2和ROC3之間循環(huán),因?yàn)橛腥齻€(gè)目錄與R、RO和ROC匹配。
如果你迷路了,不知道下一步該去哪里,可以通過(guò)在命令行上鍵入dir來(lái)查看當(dāng)前目錄的內(nèi)容。
這將提示你下一步要導(dǎo)航到哪個(gè)目錄。