Python中os模块使用方法
生活随笔
收集整理的這篇文章主要介紹了
Python中os模块使用方法
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? os模塊提供了對(duì)系統(tǒng)環(huán)境、文件、目錄等操作系統(tǒng)級(jí)的接口函數(shù)。本文主要描述os模塊和os.path模塊常用函數(shù)以及常用實(shí)例。
os模塊函數(shù)
os.getcwd() 獲取當(dāng)前工作的目錄。 os.listdir('dirname') 獲取指定目錄下的文件和目錄,以列表形式輸出 os.makedirs('dirname1/dirname2') 遞歸創(chuàng)建目錄,相當(dāng)于shell中的mkdir -p命令 os.removedirs('dirname') 若目錄為空,則刪除,并遞歸到上一級(jí)目錄,如若也為空,則刪除,依此類推。不好用,建議使用shutil.rmtree() os.mkdir('dirname') 創(chuàng)建目錄;相當(dāng)于shell中mkdir命令 os.rmdir('dirname') 刪除空目錄,若目錄不為空則無(wú)法刪除。相當(dāng)于shell中rmdir命令 os.chdir('dirname') 切換到執(zhí)行目錄,相當(dāng)于shell中cd命令 os.remove(path) 刪除path指定的文件 os.rename(old,new) 重命名文件或幕 os.chmod(path,mod) 改變文件的訪問(wèn)權(quán)限,mode用UNIX系統(tǒng)中的權(quán)限代號(hào)表示 os.stat(path) 獲取path指定文件的所有屬性 os.sep 獲取操作系統(tǒng)特定的路徑分隔符,win下為"\\",Linux下為"/" os.linesep 獲取當(dāng)前平臺(tái)使用的行終止符,win下為"\t\n",Linux下為"\n" os.pathsep 獲取用于分割文件路徑的字符串 os.name 獲取當(dāng)前使用平臺(tái)。nt表示windows,posix 表示linux os.system('command') 執(zhí)行系統(tǒng)外部命令 os.environ 獲取系統(tǒng)環(huán)境變量 os.walk() 獲取指定目錄下的所有文件和目錄 os.tmpfile() 創(chuàng)建一個(gè)臨時(shí)文件,文件創(chuàng)建在操作系統(tǒng)的臨時(shí)目錄中os.path模塊函數(shù)
os.path.abspath(path) 獲取path絕對(duì)路徑 os.path.split(path) 分割成目錄和文件名,以二元組形式返回 os.path.splitext(path) 從路徑中分割出文件的擴(kuò)展名 os.path.dirname(path) 獲取文件路徑 os.path.basename(path) 獲取文件名 os.path.exists(path) 判斷文件或目錄是否存在 os.path.isabs(path) 判斷輸入的路徑是否為絕對(duì)路徑 os.path.isfile(path) 判斷是否為文件 os.path.isdir(path) 判斷是否為目錄 os.path.join(path1[, path2[, ...]]) 組合多個(gè)路徑 os.path.getctime(filename) 獲取文件或者目錄的創(chuàng)建時(shí)間 os.path.getatime(filename) 獲取文件或者目錄的最后存取時(shí)間 os.path.getmtime(filename) 獲取文件或者目錄的最后修改時(shí)間 os.path.getsize(filename) 獲取文件大小,如果為目錄,返回0重點(diǎn)函數(shù)介紹
1、os.walk()
語(yǔ)法
? os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])
參數(shù)描述
top 指定搜索目錄 topdown 可選參數(shù),默認(rèn)值為True, 表示先返回頂級(jí)目錄下的文件,然后再遍歷子目錄中的文件。如果為False,表示先遍歷子目錄中的文件,然后再返回頂級(jí)目錄下的文件。 onerror 可選,默認(rèn)值為None,表示忽略文件遍歷時(shí)的錯(cuò)誤。如果不為空,則提供一個(gè)自定義函數(shù)提示錯(cuò)誤信息后繼續(xù)遍歷或拋出異常中止遍歷。 followlinks 可選參數(shù),默認(rèn)值為False。表示是否要跟隨目錄下的鏈接去繼續(xù)遍歷,要注意的是,os.walk不會(huì)記錄已經(jīng)遍歷的目錄,所以跟隨鏈接遍歷的話有可能一直循環(huán)調(diào)用下去。輸出
返回3元組(dirpath, dirnames, filenames)。其中dirpath表示目錄的路徑,是一個(gè)字符串。dirnames 是一個(gè)列表,包含了dirpath下所有子目錄的名字。filenames是一個(gè)列表,包含了非目錄文件的名字。這些名字不包含路徑信息,如果需要得到全路徑,需要使用os.path.join(dirpath, name)常用實(shí)例
? 1、目錄和文件的創(chuàng)建、刪除
#-*- coding:utf-8 -*-#import os import shutilcur_dir = os.getcwd() new_dir = os.path.join(cur_dir,'temp')if not os.path.exists(new_dir):os.makedirs(new_dir) else:shutil.rmtree(new_dir)os.makedirs(new_dir)new_file = os.path.join(new_dir,'tmp.log') fp = open(new_file,'w') fp.write('test') fp.close()? 2、搜索并輸出指定的/home目錄下的所有文件
#!/usr/bin/python # -*- coding: UTF-8 -*-import ossearch_dir = '/home' for root, dirs, files in os.walk(search_dir):for name in files:print os.path.join(root, name)? 3、獲取指定文件相關(guān)屬性
#!/usr/bin/python # -*- coding: UTF-8 -*-import osfile_stat = os.stat('/etc/passwd') print file_stat print 'os.stat.st_uid = %s ' % (file_stat.st_uid) #獲取文件所屬用戶ID print 'os.stat.st_gid = %s ' % (file_stat.st_gid) #獲取文件所屬組ID print 'os.stat.st_size = %s ' % (file_stat.st_size) #獲取文件大小,以字節(jié)輸出 print 'os.stat.st_atime = %s ' % (file_stat.st_atime) #獲取最近訪問(wèn)時(shí)間 print 'os.stat.st_mtime = %s ' % (file_stat.st_mtime) #獲取最近修改時(shí)間 print 'os.stat.st_ctime = %s ' % (file_stat.st_ctime) #獲取創(chuàng)建時(shí)間。某些系統(tǒng)上(如Unix)是最新數(shù)據(jù)更改的時(shí)間。參考平臺(tái)文檔? 4、根據(jù)關(guān)鍵字搜索指定目錄下的文件,并輸出文件名
#-*- coding:utf-8 -*-#import os import sys import reif len(sys.argv[1:]) == 0:print 'Please input search key words'sys.exit(1)search_keyword = sys.argv[1:] search_dir = os.getcwd() filelists = []for root, dirs, files in os.walk(search_dir):for filename in files:file_path = os.path.join(root, filename)pattern = '.*?'.join(search_keyword)regex = re.compile(pattern)fp = open(file_path,'r')for line in fp.readlines():match = regex.search(line)if match:print file_pathbreak? ?5、統(tǒng)計(jì)指定目錄下的文件和文件夾大小,類似linux上的du功能
#-*- coding:utf-8 -*-#import osDIRECTORY = 'D:\\worktools'def getDirSize(dir):size = 0for root, dirs, files in os.walk(dir):size += sum([os.path.getsize(os.path.join(root, file)) for file in files])return sizeif __name__ == '__main__':for file in os.listdir(DIRECTORY):filepath = os.path.join(DIRECTORY,file)if os.path.isdir(filepath):dirsize = getDirSize(filepath)print "%s %.2fM" % (filepath,(dirsize/1024/1024))else:dirsize = os.path.getsize(os.path.join(DIRECTORY,filepath))print "%s %.2fM" % (filepath,(dirsize/1024/1024))? 輸出結(jié)果如下:
D:\worktools\alipay_wap_main.apk 46.00M D:\worktools\Beyond_Compare-Trial-YY.exe 31.00M D:\worktools\java 2393.00M D:\worktools\jd-gui-0.3.3.windows 0.00M D:\worktools\npp_7.3.3_Installer.exe 2.00M D:\worktools\oracle 11g 1243.00M D:\worktools\oracle 11g enterprise 2241.00M D:\worktools\teamviewer 12.00M D:\worktools\TortoiseSVN-1.9.4.27285-x64-svn-1.9.4.msi 17.00M D:\worktools\wps 356.00M D:\worktools\xmanager 41.00M D:\worktools\xmanager.rar 41.00M D:\worktools\zhaoshangyinxing_422.apk 39.00M D:\worktools\反編譯 0.00M?
轉(zhuǎn)載于:https://www.cnblogs.com/linyfeng/p/8278429.html
總結(jié)
以上是生活随笔為你收集整理的Python中os模块使用方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java代码生成器 快速开发平台 二次开
- 下一篇: 玩下软工项目,第一轮--全局Contex