您好,登錄后才能下訂單哦!
本篇內容介紹了“如何使用python標準庫sys和OS的函數”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
sys模塊包括了一組非常實用的服務,內含很多函數方法和變量,用來處理Python運行時配置以及資源,從而可以與前當程序之外的系統環境交互,如:python解釋器。
sys模塊的常見函數列表(import sys):
dir(sys)dir()方法查看模塊中可用的方法。注意:如果是在編輯器,一定要注意要事先聲明代碼的編碼方式,否則中文會亂碼。sys.argv實現從程序外部向程序傳遞參數sys.exit([arg])程序中間的退出,arg=0為正常退出sys.getdefaultencoding()獲取系統當前編碼,一般默認為asciisys.setdefaultencoding()設置系統默認編碼,執行dir(sys)時不會看到這個方法,在解釋器中執行不通過,可以先執行reload(sys),再執行setdefaultencoding(‘utf8'),將系統編碼設置為utf8sys.getfilesystemencoding()獲取文件系統編碼方式,Windows下返回'mbcs',mac下返回'utf-8'sys.path獲取指定模塊搜索路徑的字符串集合,可以將寫好的模塊放在得到的某個路徑下,就可以在程序中import時正確找到sys.platform獲取當前系統平臺。sys.stdinsys.stdoutsys.stderr stdin,stdout,以及stderr變量包含與標準I/O流對應的流對象。如果需要更好地控制輸出,而print不能滿足要求,它們就是你所需要的。你也可以替換它們,重定向輸出和輸入到其它設備(device),或者以非標準的方式處理它們。sys.modules是一個全局字典,該字典是python啟動后就加載在內存中。每當程序員導入新的模塊,sys.modules將自動記錄該模塊。當第二次再導入該模塊時,python會直接到字典中查找,從而加快程序運行的速度。它擁有字典所擁有的一切方法。
os模塊負責程序與操作系統的交互,提供了訪問操作系統底層的接口。
os模塊的常見函數列表(import os):
函數-說明:
os.environ 一個dictionary 包含環境變量的映射關系
os.name 顯示當前使用的平臺
os.sep 顯示當前平臺下路徑分隔符
os.linesep 給出當前平臺使用的行終止符
os.remove(‘filename') 刪除一個文件
os.rename(“oldname”,“newname”) 重命名文件
os.getcwd() 顯示當前python腳本工作路徑
os.chdir(dir) 改變當前目錄,注意windows下用到轉義
os.listdir(‘dirname') 返回指定目錄下的所有文件和目錄名
os.makedirs(‘dirname/dirname') 可生成多層遞規目錄
os.rmdir(‘dirname') 刪除單級目錄
os.getlogin() 得到用戶登錄名稱
os.getenv(‘key') 得到環境變量配置
os.putenv(‘key') 設置環境變量
os.system() 運行shell命令,注意:這里是打開一個新的shell,運行命令,當命令結束后,關閉shell。
操作舉例:
os.mkdir('/tmp/xx'),os.system("echo'hello' > /tmp/xx/a.txt"),os.listdir('/tmp/xx') os.rename('/tmp/xx/a.txt','/tmp/xx/b.txt'),os.remove('/tmp/xx/b.txt'),os.rmdir('/tmp/xx')
用python編寫一個簡單的shell :
#!/usr/bin/pythonimport os, syscmd = sys.stdin.readline();while cmd:os.system(cmd);cmd = sys.stdin.readline();
os.path
函數-說明:
os.path.abspath() 獲取絕對路徑os.path.abspath(“1.txt”) == os.path.join(os.getcwd(),“1.txt”)
os.path.split() 用于分開一個目錄名稱中的目錄部分和文件名稱部分。
os.pardir 表示當前平臺下上一級目錄的字符 …
os.path.join(path, name) 連接目錄和文件名。
os.path.basename(path) 返回文件名
os.path.dirname(path) 返回文件路徑
os.path.getctime("/root/1.txt") 返回1.txt的ctime(創建時間)時間戳
os.path.exists(os.getcwd()) 判斷文件是否存在
os.path.isfile(os.getcwd()) 判斷是否是文件名,1是0否
os.path.isdir(‘c:\Python\temp') 判斷是否是目錄,1是0否
os.path.islink('/home/111.sql') 是否是符號連接,windows下不可用
os.path.ismout(os.getcwd()) 是否是文件系統安裝點,windows下不可用
os.path.samefile(os.getcwd(), ‘/home') 看看兩個文件名是不是指的是同一個文件
os.walk() 能夠把給定的目錄下的所有目錄和文件遍歷出來。
os.path.walk('/home/huaying', test_fun, “a.c”) 遍歷/home/huaying下所有子目錄包括本目錄,對于每個目錄都會調用函數test_fun。
函數聲明:os.walk(top, topdown=True,None)
1、參數top表示需要遍歷的頂級目錄的路徑。
2、參數topdown的默認值是“True”表示首先返回頂級目錄下的文件,然后再遍歷子目錄中的文件。當topdown的值為"False"時,表示先遍歷子目錄中的文件,然后再返回頂級目錄下的文件。
3、參數onerror默認值為"None",表示忽略文件遍歷時的錯誤。如果不為空,則提供一個自定義函數提示錯誤信息后繼續遍歷或拋出異常中止遍歷。
返回值:函數返回一個元組,含有三個元素。這三個元素分別是:每次遍歷的路徑名、路徑下子目錄列表、目錄下文件列表。
1、參數top表示需要遍歷的目錄路徑。
2、參數func表示回調函數,即對遍歷路徑進行處理的函數。所謂回調函數,是作為某個函數的參數使用,當某個時間觸發時,程序將調用定義好的回調函數處理某個任務。注意:walk的回調函數必須提供三個參數:第1個參數為os.path.walk的參數arg,第2個參數表示目錄dirname,第3個參數表示文件列表names。注意:os.path.walk的回調函數中的文件列表不和os.walk()那樣將子目錄和文件分開,而是混為了一談,需要在回調函數中判斷是文件還是子目錄。
3、參數arg是傳遞給回調函數的元組,為回調函數提供處理參數,arg可以為空。回調函數的第1個參數就是用來接收這個傳入的元組的。
過程:以top為根的目錄樹中的每一個目錄(包含top自身,如果它是一個目錄),以參數(arg, dirname, names)調用回調函數funct。參數dirname指定訪問的目錄,參數names列出在目錄中的文件(從os.listdir(dirname)中得到)。回調函數可以修改names改變dirname下面訪問的目錄的設置,例如,避免訪問樹的某一部分。(由names關聯的對象必須在合適的位置被修改,使用del或slice指派。)注意:符號連接到目錄不被作為一個子目錄處理,并且因此walk()將不訪問它們。訪問連接的目錄必須以os.path.islink(file)和os.path.isdir(file)標識它們,并且必須調用walk()。
區別:os.path.walk()與os.walk()產生的文件名列表并不相同。os.walk()產生目錄樹下的目錄路徑和文件路徑,而os.path.walk()只產生文件路徑(是子目錄與文件的混合列表)。
實例:
#coding=utf-8importos# 當前平臺上一級目錄字符..print(os.path.pardir)# os.path.abspath(__file__) :絕對路徑# 獲取絕對路徑(目錄加當前文件名)print(os.path.abspath(__file__))# os.path.split(os.getcwd()) 用于分開一個目錄名稱中的目錄部分和文件名稱部分。# 獲取絕對目錄(沒有文件名)print(os.getcwd());print(os.path.split(os.path.abspath(__file__))[0]) # 目錄print(os.path.dirname(os.path.abspath(__file__)))# 等價于上一句# 拼接文件目錄和文件名print(os.path.join(os.path.dirname(os.path.abspath(__file__)), os.path.pardir) )# 獲取父目錄# 當前目錄的路徑名稱,即父目錄(os.path.dirname():顯示當前路徑,不會顯示當前文件名)print(os.path.dirname(os.getcwd()));print(os.path.abspath(os.path.join(os.getcwd(), os.path.pardir)) )
“如何使用python標準庫sys和OS的函數”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。