python目錄操作之os模組詳解
阿新 • • 發佈:2018-12-10
os模組
os.getcwd():獲取當前目錄
>>> import os
>>> os.getcwd()
'C:\\Users\\zhigang\\Desktop'
os.chdir(path):切換目錄
>>> os.chdir("e:\\") >>> os.getcwd() 'e:\\' >>> os.chdir("C:\\Users\\zhigang\\Desktop") >>> os.getcwd() 'C:\\Users\\zhigang\\Desktop' >>> os.chdir("..") #進入到上級目錄 >>> os.getcwd() 'C:\\Users\\zhigang'
os.curdir:返回當前目錄
>>> os.curdir
'.'
os.pardir:返回當前目錄的父目錄
>>> os.pardir
'..'
>>> os.chdir(os.pardir)
>>> os.getcwd()
'C:\\Users\\zhigang'
>>> os.chdir(os.pardir)
>>> os.getcwd()
'C:\\Users'
os.mkdir(filename):在當前路徑下新建資料夾
>>> os.chdir("C:\\Users\\zhigang\\Desktop") >>> os.mkdir("gloryroad")
os.makedirs(path):建立多級目錄,預設超級許可權
>>> os.makedirs("test\\test1\\test2")
os.removedirs(path):刪除多級目錄,從子目錄向父目錄依次刪除;前提是目錄下都為空;如果有目錄不為空,則保留
>>> os.removedirs("D:\\test\\test1\\test2") #會將目錄下的所有內容都刪除,不管是否為空; >>> import shutil >>> dir(shutil) shutil.rmtree()
os.rmdir(path):刪除單級空目錄,若目錄不為空則無法刪除,會報錯
>>> os.rmdir("test")
os.remove:刪除指定的單個檔案,
>>> os.remove("D:\\1.txt")
os.rename(oldname, newname): 重新命名檔案/目錄
>>> os.rename("test1","test2") #檔名改變
os.listdir(path):檢視指定目錄下的所有檔案和子目錄
>>> os.listdir("C:\\Users\\zhigang\\Desktop")
**以列表的形式返回
>>> os.listdir(os.curdir)
os.walk(top,topdown=True,onerror=None,followlinks=False)
top:表示需要遍歷的目錄樹的路徑;
topdown:預設值是True,表示首先返回目錄樹下的檔案,然後遍歷目錄樹下的子目錄。值設為False時,則標識先遍歷目錄樹下的子目錄,返回子目錄下的檔案,最後返回根目錄下的檔案;
onerror:預設值為None,表示忽略檔案遍歷時產生的錯誤,如果不為空,則提供一個自定義函式提示錯誤資訊後繼續遍歷或丟擲異常中止遍歷
該函式返回一個列表,列表中的每一個元素都是一個元組,該元組有3個元素,分別表示每次遍歷的路徑名目錄列表和檔案列表
預設情況下,os.walk不會遍歷軟連結指向的子目錄,若有需要請將followlinks設定為True
>>> for i in os.walk("test",topdown=True):
... print (i)
...
('test', ['test2', 'test3'], ['1.txt', '2.txt'])
('test\\test2', ['test4'], ['3.txt'])
('test\\test2\\test4', [], ['4.txt'])
('test\\test3', [], [])
#統計檔案個數和目錄個數
import os
dir_count=0
file_count=0
for root, dirs, files in os.walk("testdemo",topdown=True) :
print(u"當前目錄:",root) #列印目錄絕對路徑
for name in files :
print(u'檔名:',os.path.join(root,name) )#列印檔案絕對路徑
file_count+=1
for name in dirs :
print(u'目錄名:',name) #列印目錄絕對路徑
dir_count+=1
print ("目錄個數%s" %dir_count)
print ("檔案個數%s" %file_count)
os.name:獲取當前使用的作業系統型別
>>> os.name
'nt' #windows系統下
>>> os.name
'posix' #linux系統下
os.stat(path):檔案的具體屬性
>>> os.stat("test2")
os.stat_result(st_mode=16895, st_ino=12384898975326145, st_dev=739749529, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1539497611, st_mtime=1539490460, st_ctime=1539490064)
>>> os.stat("test2").st_size #檔案大小
4096
os.system (command):執行shell命令,在linux系統中用的最多
>>> os.system("dir") #顯示當前路徑下的所有檔案
os.utime(path[, (atime, mtime)])
修改檔案的時間屬性,設定檔案的access and modified time為給定的時間,如果未指定atime和mtime引數,修改的時間將會是當前的時間
import os
os.utime("test2")
fileinfo = os.stat("test2") #修改後檢視檔案的屬性
os.sep:輸出作業系統的特定的路徑分隔符
>>> os.sep #路徑分隔符
'\\'
os.pathsep:輸出用於分割檔案路徑的字串
>>> os.pathsep
';'
os.linesep:輸出當前平臺是用的行終止符,win下為“\r\n”,Linux下為“\n”,Mac使用'\r'
>>> os.linesep
'\r\n'
os.environ:獲取系統環境變數
os.access(path, mode):輸出檔案許可權模式,返回布林值
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))
os.chmod(path, mode):修改檔案的許可權
os.chmod(r'c:\gloryroadtest.txt', 777) #可讀、可寫和可執行
os.popen(command [, mode='r' [, bufsize]]):執行shell命令,並返回一個檔案物件。然後通過操作檔案的方法去操作這個檔案物件
>>> import os
>>> os.popen("ls") #返回一個檔案物件
<os._wrap_close object at 0x7f4b8167d6d8>
>>> for i in os.popen("ls"):
... print (i)
...
#結果輸出所有檔案