python--目錄操作

目錄操作:

一、os.getcwd()

獲取當前工作目錄,即當前Python腳本工作的目錄路徑。

代碼示例:

import os

currentPath = os.getcwd()

print ("當前工作目錄:", currentPath)

二、os. chdir(path)

改變當前腳本工作目錄;相當于shell下的cd命令。

代碼示例:

import os

currentPath = os.getcwd()

print ("當前工作目錄:", currentPath)

os.chdir(r'c:\users')? ? --改變工作目錄

print ("改變后的工作目錄:", os.getcwd())

三、os.pardir

返回當前目錄的父目錄('..')

代碼示例:

import os

print (os.pardir)

print(os.getcwd())

os.chdir("e:\\test")

print(os.getcwd())

os.chdir(os.pardir)

print(os.getcwd())

四、獲取當前使用的操作系統類型(其中 ‘nt’ 是 windows,’posix’ 是linux 或者 unix)。

代碼示例:

print os.name

五、os.mkdir(path [, mode=0777])

生成單級目錄;相當于linux中的mkdir dirname。參數mode表示生成的目錄的權限,默認是超級權限,也就是0777。如果重復創建,會報錯

代碼示例:

import os

os.mkdir(r'c:\test')? ? --在c:盤下生成test的目錄

六、os.makedirs(path [, mode=0777])

可生成多層遞歸目錄,父目錄如果不存在,遞歸生成。參數mode表示生成的目錄的權限,默認是超級權限,也就是0777。

代碼示例:

import os

os.makedirs(r'c:\test111\test')? ? --在c盤錄下生成test111目錄,并在目錄下新建test目錄

七、os.removedirs(path)

若目錄為空,則刪除,并遞歸到上一級目錄,如若也為空,則刪除,依次類推。

代碼示例:

import os

os.removedirs(r'c:\test111\test')? ? --刪除test111和test目錄成功

八、os.rmdir(path)

刪除單級空目錄,若目錄不為空則無法刪除,會報錯;相當Linux中的rmdir dirname。

代碼示例:

import os

os.rmdir(r'c:\test')? ? --刪除test目錄

九、os.listdir(path)

列出指定目錄下的所有文件和子目錄,包括隱藏文件或目錄,并以列表形式返回。

代碼示例:

import os

dirContent = os.listdir(r'c:\users')

print(dirContent)

十、os.remove(filePath)

刪除一個指定的文件,參數filePath表示文件所在的路徑。

注意:該方法只能刪除文件,不能刪除目錄。

代碼示例:

#encoding=utf-8

import os

os.remove(r'c:\test.txt')? ? --test.txt文件被刪除

十一、os.rename(oldname, newname)

重命名文件/目錄。

代碼示例:

#encoding=utf-8

import os

os.rename(r'c:\test1.txt',r"c:\test2.txt")? ? --test1.txt的文件名被修改為test2

十二、os.access(path, mode)

輸出文件權限模式。

代碼示例:

#encoding=utf-8

import os

print (os.access(r'c:\gloryroadtest.txt', os.W_OK))

print (os.access(r'c:\gloryroadtest.txt', os.R_OK))

print (os.access(r'c:\gloryroadtest.txt', os.X_OK))

W寫,R讀,X可執行,輸出True,False。

十三、os.chmod(path, mode)

修改文件的權限。

代碼示例:

#encoding=utf-8

import os

os.chmod(r'c:\gloryroadtest.txt', 777)

Linux上會有效,設定文件權限為可讀、可寫和可執行

十四、os.walk(top, topdown=True, onerror=None, followlinks=False)

?top:表示需要遍歷的目錄樹的路徑。

?topdown的默認值是“True”,表示首先返回目錄樹下的文件,然后遍歷目錄樹下的子目錄。值設為False時,則表示先遍歷目錄樹下的子目錄,返回子目錄下的文件,最后返回根目錄下的文件。

?onerror的默認值是“None”,表示忽略文件遍歷時產生的錯誤。如果不為空,則提供一個自定義函數提示錯誤信息后繼續遍歷或拋出異常中止遍歷。

?該函數返回一個列表,列表中的每一個元素都是一個元組,該元組有3個元素,分別表示每次遍歷的路徑名,目錄列表和文件列表。

?默認情況下,os.walk 不會遍歷軟鏈接指向的子目錄,若有需要請將followlinks設定為true

代碼示例:

import os

for root, dirs, files in os.walk("e:\\blog",topdown=False) :

????print(u"當前目錄:",root) #打印目錄絕對路徑

????for name in files :

????????print(u'文件名:',os.path.join(root,name) )#打印文件絕對路徑

????for name in dirs :

????????print(u'目錄名:',name) #打印目錄絕對路徑

十五、os.path.split(path)

將path分割成目錄和文件名(事實上,如果你完全使用目錄,它也會將最后一個目錄作為文件名而分離,同時它不會判斷文件或目錄是否存在),并存于元組中返回。

代碼示例:

import os

pathTup = os.path.split(r'c:\gloryroad.txt')

print (pathTup)

十六、os.path.exists(path)

判斷path是否存在,如果存在返回True,否則返回False。

代碼示例:

import os

res = os.path.exists(r'd:\gloryroad\a.py')

print (res)

十七、os.path.isfile(path)

判斷path是否是文件,如果是返回True,否則返回False。

代碼示例:

import os

print (os.path.isfile(r'd:\gloryroad\a.py'))

print (os.path.isfile(r'c:\test'))

十八、os.path.isdir(path)

判斷path是否是目錄,如果是目錄返回True,否則返回False。

代碼示例:

import os

print (os.path.isdir('d:\\gloryroad'))

print (os.path.isdir(r'd:\gloryroad\a.py'))

十九、os.path.getsize(name)

獲得文件大小,如果name是目錄返回結果是0L或者4096L;如果name代表的目錄或文件不存在,則會報WindowsError異常。

代碼示例:

import os

print (os.path.getsize("d:\\gloryroad\\a.py"))

二十、os.path.join(a, *p)

連接兩個或更多的路徑名,中間以“\”分隔,如果所給的參數中都是絕對路徑名,那先給的絕對路徑將會被丟棄。

代碼示例:

import os

print (os.path.join('c:\\aa', 'test', 'a.txt'))

print (os.path.join('c:\\aa', 'c:\\test', 'd:\\a.txt'))

二十一、os.path.getatime(filename)

返回文件的最后訪問時間,返回的是時間戳。

代碼示例:

import os

import time

lastTime = os.path.getatime(r"d:\gloryroad\a.py")? ? --獲取文件最后訪問時間

print (lastTime)

formatTime = time.localtime(lastTime)? ? --將時間戳轉成時間元組

print (formatTime)????

print (time.strftime("%Y-%m-%d %H:%M:%S",formatTime))????--格式化時間元組為時間字符串

二十二、os.path.getctime(filename)

以時間戳的形式返回文件或目錄的創建時間,在Unix系統上是文件最近更改的時間,在Windows上是文件或目錄的創建時間。

代碼示例:

import os

import time

lastTime = os.path.getctime(r"d:\gloryroad\a.py")? ? --獲取文件最后存取時間

print (lastTime)

formatTime = time.localtime(lastTime)? ? --將時間戳轉成時間元組

print (formatTime)

print (time.strftime("%Y-%m-%d %H:%M:%S", formatTime))? ? --格式化時間元組為時間字符串

練習題

1.基礎題:

????檢驗給出的路徑是否是一個文件:os.path.isfile("D:\\test.txt")

????檢驗給出的路徑是否是一個目錄:os.path.isdir("D:\\test.txt")

????判斷是否是絕對路徑:os.path.isabs("D:\\test.txt")

????檢驗給出的路徑是否真地存在:

2.返回一個路徑的目錄名和文件名:os.listdir("D:\\")

3.分離文件名與擴展名:os.path.splitext("D:\\test.txt")

4.找出某個目錄下所有的文件,并在每個文件中寫入“gloryroad”

>>> for files in os.walk("D:\\test"):

...? ? print(files)

...

('D:\\test', [], ['a.txt', 'b.txt', 'test.txt', 'test1.txt'])

>>> with open("D:\\test\\a.txt","w+") as f:

...? ? f.write("gloryroad")

5.如果某個目錄下文件名包含txt后綴名,則把文件后面追加寫一行“被我找到了!”

6. 命題練習:

????1) 一個目錄下只有文件(自己構造),拷貝幾個文件(手工完成)

????2 )用listdir函數獲取所有文件,如果文件的創建時間是今天,那么就在文件里面寫上文件的路徑、文件名和文件擴展名

????3) 如果不是今天創建(獲取文件的創建時間,并轉化為時間格式,判斷是否今天),請刪除

????4 )計算一下這個程序的執行耗時

7.刪除某個目錄下的全部文件

8.統計某個目錄下文件數和目錄個數

9.使用程序建立一個多級的目錄,在每個目錄下,新建一個和目錄名字一樣的txt文件

10. 查找某個目錄下是否存在某個文件名

11. 用系統命令拷貝文件

12.輸入源文件所在路徑和目標目錄路徑,然后實現文件拷貝功能

13.遍歷某個目錄下的所有圖片,并在圖片名稱后面增加

14、遍歷指定目錄下的所有文件,找出其中占用空間最大的前3個文件

15、過濾py源碼中的#注釋,另存為文件result.py,并執行result.py,斷言是否執行成功

16、文件訪問,提示輸入數字 N 和文件 F, 然后顯示文件 F 的前 N 行.

17、從命令行接受1個路徑如:c:\a\b\c\1.py, 實現1個函數創建目錄a\b\c,創建文件1.py,實現1個函數刪除已創建的目錄及文件

18、有一個ip.txt,里面每行是一個ip,實現一個函數,ping 每個ip的結果,把結果記錄存到ping.txt中,格式為ip:0或ip:1 ,0代表ping成功,1代表ping失敗

19、實現DOS命令執行功能,接受輸入命令并執行,然后把執行結果和返回碼打印到屏幕

20、文件訪問

????訪問一存在多行的文件,實現每隔一秒逐行顯示文本內容的程序,每次顯示文本文件的 5行, 暫停并向用戶提示“輸入任意字符繼續”,按回車鍵后繼續執行,直到文件末尾。

????顯示文件的格式為:[當前時間] 一行內容,比如:[2016-07-08 22:21:51] 999370this is test

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,321評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,559評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,442評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,835評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,581評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,922評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,931評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,096評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,639評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,374評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,591評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,104評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,789評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,196評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,524評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,322評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,554評論 2 379

推薦閱讀更多精彩內容

  • ¥開啟¥ 【iAPP實現進入界面執行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,494評論 0 17
  • 一、Python簡介和環境搭建以及pip的安裝 4課時實驗課主要內容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 5,799評論 0 10
  • 一、目錄遍歷 os 用于獲取系統的功能,主要用于操作文件或者文件夾代碼演示:import ospath = r...
    hollow_02f9閱讀 1,574評論 0 0
  • From: http://www.cnblogs.com/zhoujie/archive/2013/04/10/p...
    pzka158閱讀 1,799評論 0 1
  • 一個人是要多接觸不同的人, 這樣才能心胸開闊,看的開,不再在自己的小世界里自怨自艾。比如路遠,我的鄰居和我一樣遠。...
    蜂蜜87閱讀 262評論 0 0