python中os模塊和sys模塊的使用詳解
一、os模塊
os.getcwd() 獲取當(dāng)前的工作目錄
os.chdir(‘絕對路徑/相對于當(dāng)前工作目錄的路徑’) 改變工作目錄,相當(dāng)于shell的cd命令,例如Windows平臺(tái)下os.chdir(r’D:\PythonScripts\test\c’),用r對\進(jìn)行轉(zhuǎn)義,第一層級必須使用雙斜線,其他層級可以單斜線也可以雙斜線,在linux和unix平臺(tái)下用/分割
- os.curdir 返回當(dāng)前路徑 .
- os.pardir 返回當(dāng)前路徑的上一層路徑,即 ..
- os.mkdir('dir') 生成單級目錄
- os.makedirs(r'dir1\dir2') 創(chuàng)建遞歸目錄,不加絕對路徑表示在當(dāng)前工作目錄下創(chuàng)建
- os.rmdir('dir') 刪除單級空目錄,如果目錄不為空無法刪除
- os.removedirsr('dir1\dir2') 若目錄為空則刪除,并遞歸到上一層目錄,若上一層為空也刪除,以此類推
- os.listdir(dir) 列出指定目錄下的所有一級文件和目錄,并以列表形式打印
- os.remove('file') 刪除一個(gè)文件
- os.rename('oldname','newname') 重命名文件或目錄
- os.listdir('dir')以列表形式列出dir目錄下所有的文件和目錄
- os.stat('file'/'dir') 獲取文件/目錄的大小,鏈接數(shù),創(chuàng)建時(shí)間,上一次修改、訪問時(shí)間等信息
- os.sep 獲取當(dāng)前環(huán)境的分隔符
- os.linesep 獲取當(dāng)前環(huán)境的換行符,windows下為/r/n,linux下為/n
- os.pathsep 獲取當(dāng)前環(huán)境分割文件路徑的字符串,windows下為;,linux下為:
- os.name 獲取當(dāng)前使用平臺(tái),windows為nt,linux為posix
- os.environ 獲取系統(tǒng)環(huán)境變量
- os.system(shell command) 運(yùn)行shell命令,返回執(zhí)行狀態(tài)碼,執(zhí)行結(jié)果顯示到屏幕
- os.path.abspath(path) 返回絕對路徑
- os.path.split(path) 將path分割成目錄和文件名的兩個(gè)元素的元組
- os.path.dirame(path) 返回path的目錄,相當(dāng)于os.path.split(path)的第一個(gè)元素
- os.path.basename(path) 返回path最后的文件名,如果path以/或\結(jié)尾則返回空值,即os.path.split(path)的第二個(gè)元素
- os.path.exists(path) 如果path存在則返回True,否則返回False
- os.path.isabs(path) 如果path是絕對路徑則返回True,否則返回False
- os.path.isfile(path) 如果path是一個(gè)存在的文件則返回True,否則返回False
- os.path.isdir(path) 如果path是一個(gè)存在的目錄則返回True,否則返回False
- os.path.join(path1[,path2[,path3…]]) 將多個(gè)路徑組合后返回,第一個(gè)絕對路徑之前的參數(shù)將被忽略
- os.path.getatime(path) 獲取path所指向的文件或者目錄的最后訪問時(shí)間
- os.path.getmtime(path) 獲取path所指向的文件或者目錄的最后修改時(shí)間
二、os模塊中的os.walk()函數(shù)
os.walk(‘path’)函數(shù)對于每個(gè)目錄返回一個(gè)三元組,(dirpath, dirnames, filenames),
第一個(gè)是路徑,第二個(gè)是路徑下面的目錄,第三個(gè)是路徑下面的文件
如果加參數(shù)topdown=False則表示自下而上進(jìn)行遍歷,默認(rèn)為topdown=True即自上而下進(jìn)行遍歷
#對于上述結(jié)構(gòu),os.walk()的結(jié)果為 ['dir', ['dir1', 'dir2'], ['file1.txt', 'file2.txt']] ['dir\\dir1', ['dir11', 'dir12'], []] ['dir\\dir1\\dir11', [], ['file111.txt']] ['dir\\dir1\\dir12', [], []] ['dir\\dir2', ['dir21'], ['file21.txt']] ['dir\\dir2\\dir21', [], []] #可通過如下腳本驗(yàn)證 import sys l=[] for root,dirs,files in os.walk('dir'): ? ? l.append(root) ? ? l.append(dirs) ? ? l.append(files) ? ? print(l) ? ? l=[]
結(jié)果分析
1.先以給定的目錄作為根目錄進(jìn)行遍歷,讀取根目錄的文件夾和文件
2.以根目錄下子目錄為新的根目錄進(jìn)行遍歷,讀取其下面的文件夾和文件
3.再以2中得到的子目錄為根目錄進(jìn)行遍歷,讀取其下面的文件夾和文件
4.重復(fù)3,直至所有子目錄下面沒有子目錄和文件
三、sys模塊
- sys.path 獲取python PATH環(huán)境變量的值
- sys.version 獲取python解釋器的版本
- sys.exit(n) 在程序執(zhí)行過程中退出程序,正常退出為exit(0)
- sys.argv 返回的結(jié)果為一個(gè)列表且各元素都為字符串,第一個(gè)元素為當(dāng)前執(zhí)行文件的名稱,后面的元素為執(zhí)行文件時(shí)傳入的參數(shù),以空格分隔各參數(shù),如果只有空格表示沒有參數(shù)。
[root@oldboy test]# cat argv.py import sys print(sys.argv) [root@oldboy test]# python argv.py ['argv.py'] [root@oldboy test]# python argv.py 11 '22' [33,44] 'True' {1:'a'}#文件執(zhí)行時(shí)傳入的參數(shù)不能為元組,否則會(huì)報(bào)錯(cuò) ['argv.py', '11', '22', '[33,44]', 'True', '{1:a}']
sys.stdout.write(‘str’) 向屏幕輸出,不換行,相當(dāng)于print,但是print(‘str’)是換行輸出
sys.stdout.flush( ) 將緩存輸出到屏幕
例如通過#逐步打印進(jìn)度條
import time,sys for i in range(20): sys.stdout.write('#') #打印一個(gè)#,不換行 time.sleep(0.1) #睡0.1秒再輸出下一個(gè)# sys.stdout.flush() #將緩存中的#輸出到屏幕,沒有這一行系統(tǒng)會(huì)等到輸出完畢再將緩存中的20個(gè)#輸出到屏幕 print('')
解析文件執(zhí)行時(shí)輸入的參數(shù):optparse模塊
import optparse class ArgvHandle(): ? ? def __init__(self): ? ? ? ? self.op = optparse.OptionParser() ? ? ? ? self.op.add_option('-s','--server',dest = 'server') ? ? ? ? #,前面為文件執(zhí)行時(shí)的輸入,dest表示參數(shù)名。如果文件執(zhí)行時(shí)帶有-s或者--server,則形成參數(shù)名稱為dest指定名稱、參數(shù)值為-s或者--server后面緊跟著的內(nèi)容 ? ? ? ? self.op.add_option('-P','--port',dest = 'port') ? ? ? ? self.op.add_option('-u','--username',dest = 'username') ? ? ? ? self.op.add_option('-p','--passwort',dest = 'password') ?? ??? ?#學(xué)習(xí)中遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流群:725638078 ? ? ? ? option,args = self.op.parse_args() ? ? ? ? print(type(option),type(args)) ? ? ? ? print(option,args) ? ? ? ?? ? ? ? print(option.server,option.port,option.username,option.password)#通過.取參數(shù)名對應(yīng)的值 test = ArgvHandle()
隨意輸入?yún)?shù)執(zhí)行結(jié)果如下
可知op.parse_args()是將文件執(zhí)行python mani.py后面的參數(shù)分割成兩部分,一部分類似字典的形式(實(shí)際是一個(gè)對象),一部分是一個(gè)列表。
如果匹配到add_option定義的參數(shù)形式,則將后面緊跟著的輸入作為參數(shù)的值;未匹配到add_option定義的參數(shù)形式的其余輸入被整理到一個(gè)列表中。
到此這篇關(guān)于python中os模塊和sys模塊的使用詳解的文章就介紹到這了,更多相關(guān)python os模塊和sys模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python+Pika+RabbitMQ環(huán)境部署及實(shí)現(xiàn)工作隊(duì)列的實(shí)例教程
RabbitMQ是一個(gè)消息隊(duì)列服務(wù)器,在本文中我們將學(xué)習(xí)到Python+Pika+RabbitMQ環(huán)境部署及實(shí)現(xiàn)工作隊(duì)列的實(shí)例教程,需要的朋友可以參考下2016-06-06Python實(shí)現(xiàn)正則表達(dá)式匹配任意的郵箱方法
今天小編就為大家分享一篇Python實(shí)現(xiàn)正則表達(dá)式匹配任意的郵箱方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12Pandas數(shù)據(jù)分析常用函數(shù)的使用
本文主要介紹了Pandas數(shù)據(jù)分析常用函數(shù)的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01python實(shí)例方法的使用注意及代碼實(shí)例
在本篇文章里小編給大家總結(jié)的是關(guān)于python實(shí)例方法的使用注意及代碼實(shí)例內(nèi)容,對此有興趣的朋友們可以參考下。2022-11-11記錄一下scrapy中settings的一些配置小結(jié)
這篇文章主要介紹了記錄一下scrapy中settings的一些配置小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Python自動(dòng)采集微信聯(lián)系人的實(shí)現(xiàn)示例
這篇文章主要介紹了Python自動(dòng)采集微信聯(lián)系人的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02