os模塊簡介
os模塊提供了多數操作系統的功能接口函數。當os模塊被導入後,它會自適應於不同的操作系統平臺,根據不同的平臺進行相應的操作,在python編程時,經常和文件、目錄打交道,所以離不了os模塊
os模塊常用方法
目錄文件操作
os.getcwd()
獲取當前執行腳本的工作路徑os.chdir("dirname")
獲取當前執行腳本的工作路徑os.pardir
獲取當前執行腳本目錄的父級的目錄的字符串,一般表示爲".."。os.makedirs('dir1/dir2')
在當前執行的腳本的目錄下新建多層目錄,若目錄已經存在則會報錯os.removedirs('dirname')
可刪除多層目錄,但前提是目錄必須爲空若不爲空,則會停止在不爲空的那一層目錄os.mkdir('dirname')
在當前執行的腳本的目錄下新建單層目錄,若目錄已經存在則會報錯os.rmdir('dirname')
刪除單層目錄,若目錄不爲空則無法刪除os.listdir(path)
列出指定的目錄下的所有文件和子目錄,包括隱藏文件,並以列表方式返回,若不指定目錄,則爲當前執行文件的目錄os.remove(path)
刪除一個文件os.rename("oldname","newname")
重命名一個文件或者目錄os.stat('path')
獲取文件或者目錄的信息,返回的是一個類對象
系統操作相關
os.sep
輸出操作系統特定的路徑分隔符,win爲‘\’,linux爲‘/’os.linesep
輸出操作系統的行終止符,win爲‘\t\n’,linux爲‘\n’os.pathsep
輸出操作系統分割文件路徑的字符串,win爲; linux爲:os.name
輸出字符串表示當前使用平臺。win爲nt,linux爲posixos.environ
獲取系統環境變量os.system("command")
執行系統命令,直接輸出,無法賦值給變量
文件路徑操作方法
os.path.abspath(path)
返回一個文件的標準化絕對路徑os.path.split(path)
將一個路徑分割爲目錄和文件名兩部分,並以元祖形式返回os.path.dirname(path)
返回path的目錄,即os.path.split(path)結果的第一部分os.path.basename(path)
返回path的文件名,如果以‘/’或者‘'結尾,那麼會返回空值,即os.path.split(path)結果的第二部分os.path.exists(path)
如果path存在,則返回True,否則返回Falseos.path.isabs(path)
判斷path是否爲絕對路徑,是則返回True,否則返回Falseos.path.isfile(path)
判斷path是否一個存在的文件,是則返回True,否則返回Falseos.path.isdir(path)
判斷path是否是一個存在的目錄,是則返回True,否則返回Falseos.path.join(path1,[path2[,....])
將多個路徑組合後返回,第一個絕對路徑之前的參數會被忽略os.path.getatime(path)
返回path所指向的文件或者目錄的最後讀取時間os.path.getmtime(path)
返回path所指向的文件或者目錄的最後修改時間
sys模塊概述
這個模塊可供訪問由解釋器使用或維護的變量和與解釋器進行交互的函數,sys是和解釋器系統的交互,而os是和操作系統低層進行交互,這是兩者區別
sys模塊常用方法
sys.argv
:
實現從程序外部向程序傳遞參數,並將參數保存在列表中以供調用
#!/usr/bin/env python
import sys
print sys.argv[0]
print sys.argv[1]
################
python sys.py argv1
#sys.py
#argv1
sys.exit([arg])
程序中間的退出,arg指定退出碼,0代碼爲正常退出sys.getdefaultencoding()
獲取系統當前編碼sys.setdefaultencoding(arg)
設置當前系統的編碼sys.getfilesystemencoding()
獲取文件系統當前編碼sys.path
獲取指定模塊搜索路徑的字符串集合,可以將寫好的模塊放在得到的某個路徑下,就可以在程序中import時正確找到,類似於linux中的PATH環境變量sys.stdin,sys.stdout,sys.stderr
stdin , stdout , 以及stderr 變量包含與標準I/O 流對應的流對象. 如果需要更好地控制輸出,而print 不能滿足你的要求, 它們就是你所需要的. 你也可以替換它們, 這時候你就可以重定向輸出和輸入到其它設備( device ), 或者以非標準的方式處理它們
# 簡單的進度條函數
import sys
import time
for i in range(10):
sys.stdout.write('#') #向屏幕輸出#字符號
time.sleep(0.1)
sys.stdout.flush() #由於輸出字符會先寫在緩存中,因此不加此參數,
#號會在循環完成後一起輸出