目錄操作:
一、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