import osimport tarfile#壓縮,建立.gz#建立壓縮包名tar = tarfile.open('/tmp/tartest.tar.gz','w:gz')# 建立壓縮包for root,dir,files in os.walk("/tmp/tartest"): print root print dir print files for file in files: fullpath = os.path.join(root,file) tar.add(fullpath)tar.close()
os包包括各類各樣的函數,以實現操做系統的許多功能。這個包很是龐雜。os包的一些命令就是用於文件管理。咱們這裏列出最經常使用的:shell
mkdir(path) 建立新目錄,path爲一個字符串,表示新目錄的路徑。至關於$mkdir命令rmdir(path) 刪除空的目錄,path爲一個字符串,表示想要刪除的目錄的路徑。至關於$rmdir命令listdir(path) 返回目錄中全部文件。至關於$ls命令。remove(path) 刪除 path指向的文件。rename(src, dst) 重命名文件,src和dst爲兩個路徑,分別表示重命名以前和以後的路徑。chmod(path, mode) 改變path指向的文件的權限。至關於$chmod命令。chown(path, uid, gid) 改變path所指向文件的擁有者和擁有組。至關於$chown命令。stat(path) 查看path所指向文件的附加信息,至關於$ls -l命令。symlink(src, dst) 爲文件dst建立軟連接,src爲軟連接文件的路徑。至關於$ln -s命令。getcwd() 查詢當前工做路徑 (cwd, current working directory),至關於$pwd命令。
import ospath = '/test/test1/test2/'print pathprint os.chdir(path)#print os.chdir('/test/test1/test2')print os.getcwd()#判斷路徑是否是存在if os.getcwd() == "/test/test1/test2": print 1
copy(src, dst) 複製文件,從src到dst。至關於$cp命令。move(src, dst) 移動文件,從src到dst。至關於$mv命令。
import shutilshutil.copy('a.txt', 'b.txt')
1、open默認以讀模式打開,而且咱們打開的,必定是個存在的文件,不然會報錯。而這個文件,能夠是相對路徑,也能夠是絕對路徑2、可是咱們以寫模式打開的時候,若是這個文件不存在,則建立,這裏面不會報錯3、文件指針的問題4、readline和readliens是不用加參數的,不是咱們指望的讀取幾行的結果5、read函數參數的問題:負數和沒有參數是同樣的效果6、close不是必須的,可是咱們操做完一個文件的時候儘可能去close它7、能夠用+模式解決既能夠讀,又能夠寫的問題8、read模式能夠用readline和readliens讀一行和讀多行,可是write模式只寫一行,用writelines9、在a+模式下,文件指針對寫不起做用(必定是在追加),可是對讀起做用。注意這裏和r+的區別10、tell()函數返回當前文件指針的位置11、seek()函數將文件指針移動到指定的位置,若是查找的位置超出了文件的長度,這個時候,仍然是將文件指針指到指定的位置,對於讀,至關因而放到了文件末尾,可是寫,會補充相應個數的0值,而後在指定的位置寫入。若是是負值,則會報參數錯誤(也就是參數的取值範圍是天然數)。12、在r+模式下,seek能夠實現從指定位置修改一個文件13、在a+模式下,無論怎麼移動文件指針,對寫都不起做用,寫必定仍是在文件末尾追加,可是能夠經過seek去實現從任意位置的讀14、truncate函數按照指定的字符大小截斷源文件
os.sep 能夠取代操做系統特定的路徑分隔符。windows下爲 '\\'os.name 字符串指示你正在使用的平臺。好比對於Windows,它是'nt',而對於Linux/Unix用戶,它是 'posix'os.getcwd() 函數獲得當前工做目錄,即當前Python腳本工做的目錄路徑os.getenv() 獲取一個環境變量,若是沒有返回noneos.putenv(key, value) 設置一個環境變量值os.listdir(path) 返回指定目錄下的全部文件和目錄名os.remove(path) 函數用來刪除一個文件os.system(command) 函數用來運行shell命令os.linesep 字符串給出當前平臺使用的行終止符。例如,Windows使用 '\r\n',Linux使用 '\n' 而Mac使用 '\r'os.path.split(path) 函數返回一個路徑的目錄名和文件名os.path.isfile() 和os.path.isdir()函數分別檢驗給出的路徑是一個文件仍是目錄os.path.exists() 函數用來檢驗給出的路徑是否真地存在os.curdir 返回當前目錄 ('.')os.mkdir(path) 建立一個目錄os.makedirs(path) 遞歸的建立目錄os.chdir(dirname) 改變工做目錄到dirname os.path.getsize(name) 得到文件大小,若是name是目錄返回0Los.path.abspath(name) 得到絕對路徑os.path.normpath(path) 規範path字符串形式os.path.splitext() 分離文件名與擴展名os.path.join(path,name) 鏈接目錄與文件名或目錄os.path.basename(path) 返回文件名os.path.dirname(path) 返回文件路徑os.walk(top,topdown=True,onerror=None) 遍歷迭代目錄os.rename(src, dst) 重命名file或者directory src到dst 若是dst是一個存在的directory, 將拋出OSError. 在Unix, 若是dst在存且是一個file, 若是用戶有權限的話,它將被安靜的替換. 操做將會失敗在某些Unix 中若是src和dst在不一樣的文件系統中. 若是成功, 這命名操做將會是一個原子操做 (這是POSIX 須要). 在 Windows上, 若是dst已經存在, 將拋出OSError,即便它是一個文件. 在unix,Windows中有效。os.renames(old, new) 遞歸重命名文件夾或者文件。像rename()
shutil.copyfile( src, dst) 從源src複製到dst中去。固然前提是目標地址是具有可寫權限。拋出的異常信息爲IOException. 若是當前的dst已存在的話就會被覆蓋掉shutil.move( src, dst) 移動文件或重命名shutil.copymode( src, dst) 只是會複製其權限其餘的東西是不會被複制的shutil.copystat( src, dst) 複製權限、最後訪問時間、最後修改時間shutil.copy( src, dst) 複製一個文件到一個文件或一個目錄shutil.copy2( src, dst) 在copy上的基礎上再複製文件最後訪問時間與修改時間也複製過來了,相似於cp –p的東西shutil.copy2( src, dst) 若是兩個位置的文件系統是同樣的話至關因而rename操做,只是更名;若是是不在相同的文件系統的話就是作move操做shutil.copytree( olddir, newdir, True/Flase)把olddir拷貝一份newdir,若是第3個參數是True,則複製目錄時將保持文件夾下的符號鏈接,若是第3個參數是False,則將在複製的目錄下生成物理副原本替代符號鏈接shutil.rmtree( src ) 遞歸刪除一個目錄以及目錄內的全部內容