python標準庫OS模塊函數列表與實例全解
os就是“operating system”的縮寫,顧名思義,os模塊提供的就是各種 Python 程序與操作系統進行交互的接口。通過使用os模塊,一方面可以方便地與操作系統進行交互,另一方面頁可以極大增強代碼的可移植性。如果該模塊中相關功能出錯,會拋出OSError異常或其子類異常。
注意
如果是讀寫文件的話,建議使用內置函數open();
如果是路徑相關的操作,建議使用os的子模塊os.path;
如果要逐行讀取多個文件,建議使用fileinput模塊;
要創建臨時文件或路徑,建議使用tempfile模塊;
要進行更高級的文件和路徑操作則應當使用shutil模塊
Python OS常見函數列表 函數 描述 os.sep 取代操作系統特定的路徑分隔符 os.name 指示你正在使用的工作平臺。比如對于Windows,它是’nt’,而對于Linux/Unix用戶,它是’posix’。 os.getcwd 得到當前工作目錄,即當前python腳本工作的目錄路徑。 os.getenv()和os.putenv 分別用來讀取和設置環境變量 os.listdir() 返回指定目錄下的所有文件和目錄名 os.remove(file) 刪除一個文件 os.stat(file) 獲得文件屬性 os.chmod(file) 修改文件權限和時間戳 os.mkdir(name) 創建目錄 os.rmdir(name) 刪除目錄 os.removedirs(r“c:python”) 刪除多個目錄 os.system() 運行shell命令 os.exit() 終止當前進程 os.linesep 給出當前平臺的行終止符。例如,Windows使用’rn’,Linux使用’n’而Mac使用’r’ os.path.split() 返回一個路徑的目錄名和文件名 os.path.isfile()和os.path.isdir() 分別檢驗給出的路徑是一個目錄還是文件 os.path.existe() 檢驗給出的路徑是否真的存在 os.listdir(dirname) 列出dirname下的目錄和文件 os.getcwd() 獲得當前工作目錄 os.curdir 返回當前目錄(’.’) os.chdir(dirname) 改變工作目錄到dirname os.path.isdir(name) 判斷name是不是目錄,不是目錄就返回false os.path.isfile(name) 判斷name這個文件是否存在,不存在返回false os.path.exists(name) 判斷是否存在文件或目錄name os.path.getsize(name) 或得文件大小,如果name是目錄返回0L os.path.abspath(name) 獲得絕對路徑 os.path.isabs() 判斷是否為絕對路徑 os.path.normpath(path) 規范path字符串形式 os.path.split(name) 分割文件名與目錄(事實上,如果你完全使用目錄,它也會將最后一個目錄作為文件名而分離,同時它不會判斷文件或目錄是否存在) os.path.splitext() 分離文件名和擴展名 os.path.join(path,name) 連接目錄與文件名或目錄 os.path.basename(path) 返回文件名 os.path.dirname(path) 返回文件路徑 Python OS模塊庫open模式os.mknod(“text.txt”):創建空文件
fp = open(“text.txt”,w):直接打開一個文件,如果文件不存在就創建文件
模式 描述 w 寫方式 a 追加模式打開(從EOF開始,必要時創建新文件) r+ 以讀寫模式打開 w+ 以讀寫模式打開 a+ 以讀寫模式打開 rb 以二進制讀模式打開 wb 以二進制寫模式打開 (參見 w ) ab 以二進制追加模式打開 (參見 a ) rb+ 以二進制讀寫模式打開 (參見 r+ ) wb+ 以二進制讀寫模式打開 (參見 w+ ) ab+ 以二進制讀寫模式打開 (參見 a+ ) Python OS模塊庫文件操作 方法 描述 fp.read([size]) size為讀取的長度,以byte為單位 fp.readline([size]) 讀一行,如果定義了size,有可能返回的只是一行的一部分 fp.readlines([size]) 把文件每一行作為一個list的一個成員,并返回這個list。其實它的內部是通過循環調用readline()來實現的。如果提供size參數,size是表示讀取內容的總長,也就是說可能只讀到文件的一部分。 fp.write(str) 把str寫到文件中,write()并不會在str后加上一個換行符 fp.writelines(seq) 把seq的內容全部寫到文件中(多行一次性寫入)。這個函數也只是忠實地寫入,不會在每行后面加上任何東西。 fp.close() 關閉文件。python會在一個文件不用后自動關閉文件,不過這一功能沒有保證,最好還是養成自己關閉的習慣。 如果一個文件在關閉后還對其進行操作會產生ValueError fp.flush() 把緩沖區的內容寫入硬盤 fp.fileno() 返回一個長整型的”文件標簽“ fp.isatty() 文件是否是一個終端設備文件(unix系統中的) fp.tell() 返回文件操作標記的當前位置,以文件的開頭為原點 fp.next() 返回下一行,并將文件操作標記位移到下一行。把一個file用于for … in file這樣的語句時,就是調用next()函數來實現遍歷的。 fp.seek(offset[,whence]) 將文件打操作標記移到offset的位置。這個offset一般是相對于文件的開頭來計算的,一般為正數。但如果提供了whence參數就不一定了,whence可以為0表示從頭開始計算,1表示以當前位置為原點計算。2表示以文件末尾為原點進行計算。需要注意,如果文件以a或a+的模式打開,每次進行寫操作時,文件操作標記會自動返回到文件末尾。 fp.truncate([size]) 把文件裁成規定的大小,默認的是裁到當前文件操作標記的位置。如果size比文件的大小還要大,依據系統的不同可能是不改變文件,也可能是用0把文件補到相應的大小,也可能是以一些隨機的內容加上去。 Python OS模塊庫目錄操作 函數 描述 os.mkdir(“file”) 創建目錄 shutil.copyfile(“oldfile”,”newfile”) 復制文件:oldfile和newfile都只能是文件 shutil.copy(“oldfile”,”newfile”) oldfile只能是文件夾,newfile可以是文件,也可以是目標目錄 shutil.copytree(“olddir”,”newdir”) 復制文件夾.olddir和newdir都只能是目錄,且newdir必須不存在 os.rename(“oldname”,”newname”) 重命名文件(目錄).文件或目錄都是使用這條命令 shutil.move(“oldpos”,”newpos”) 移動文件(目錄) os.rmdir(“dir”) 只能刪除空目錄 shutil.rmtree(“dir”) 空目錄、有內容的目錄都可以刪 os.chdir(“path”) 轉換目錄,換路徑 Python OS模塊庫實例引入OS標準模塊庫#!/usr/bin/env pythonimport osprint os.getcwd()#獲取當前路徑print os.listdir(’/mnt’) #列出/mnt下面的所有目錄和文件 print os.mkdir(’lala’) #創建目錄lala和hahaprint os.mkdir(’haha’) print os.rmdir(’haha’) #刪除haha print os.rename(’example.txt’,’back.txt’) #修改文件名
運行效果如下
root@ruanyang-HP-ProDesk-680-G2-MT:/mnt/python# python os.py /mnt/python[’proc’, ’perl_bash’, ’docker’, ’warn’, ’blog’, ’python’, ’hostname’, ’test’, ’tags’, ’perl_DB’, ’shell’, ’perl_test’, ’.vimrc~’, ’club.yml’, ’test.c’, ’.vimrc’]NoneNoneNoneNoneroot@ruanyang-HP-ProDesk-680-G2-MT:/mnt/python# lsback.txt exit.py lala modules.py os_file.py os.py sys.py(1)os.name 返回操作系統類型
值為posix 是linux操作系統
值為nt 是windows操作系統
(2)os.uname()操作系統的詳細信息info = os.uname()print(info)print(info.sysname)print(info.nodename)(3)os.environ 返回系統的環境變量
print(os.environ)print(os.environ.get(’PATH’)) #通過key值獲環境變量對應的value值(4)os.path.isabs()判斷是否是絕對路徑
從根開始的路徑為絕對路徑,不判斷文件是否存在
print(os.path.isabs(’/tmp/gfff’))print(os.path.isabs(’hello.jpg’))(5)生成絕對路徑
print(os.path.abspath(’hello.png’))print(os.path.join(os.path.abspath(’.’),’hello’))print(os.path.join(’/home/kiosk’,’python.jpg’))(6)獲取目錄名和文件名
filename = ’/home/home/Desktop/filename’print(os.path.basename(filename)) #獲取filename文件名print(os.path.dirname(filename)) #獲取filename目錄名(7)創建目錄
os.mkdir(’img’) #創建一個目錄os.makedirs(’img/dir1/dir2’) #遞歸創建目錄#不能遞歸刪除目錄os.rmdir(’img’)(8)創建文件和刪除文件
os.mknod(’00_ok.txt’) #創建文件 os.remove(’00_ok.txt’) #刪除文件(9)文件重命名
os.rename(’data.txt’,’data2.txt’) #將data.txt文件重命名為data2.txt(10)判斷文件或目錄是否存在
print(os.path.exists(’data.txt’)) (11)分離后綴名和文件名
print(os.path.splitext(’hello.jpg’))(12)將目錄名和文件名分離
print(os.path.split(’/tmp/hello/hello.jpg’))(13)獲取文件上次修改時間戳
print(os.path.getctime(’/etc/group’))
本文主要介紹了python標準庫OS模塊函數列表與實例全解,更多關于python標準庫OS模塊的知識請查看下面的相關鏈接
相關文章:
