教你Python使用shutil操作檔案、subprocess執行子程式的方法
導讀 | 這篇文章介紹了Python使用shutil操作檔案、subprocess執行子程式的方法,文中透過示例程式碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑑價值,需要的朋友可以參考下 |
一、shutil模組(瞭解):高階的檔案、資料夾、壓縮包處理模組。
import shutil # shutil.copyfileobj(fsrc, fdst[, length]),將檔案內容複製到另一個檔案中 shutil.copyfileobj(open('old.xml', 'r'), open('new.xml', 'w')) # shutil.copyfile(src, dst),複製檔案 shutil.copyfile('f1.log', 'f2.log') # 目標檔案無需存在 # shutil.copymode(src, dst),僅複製許可權。內容、組、使用者均不變 shutil.copymode('f1.log', 'f2.log') # 目標檔案必須存在 # shutil.copystat(src, dst),僅複製狀態的資訊,包括:mode bits, atime, mtime, flags shutil.copystat('f1.log', 'f2.log') # 目標檔案必須存在 # shutil.copy(src, dst),複製檔案和許可權 shutil.copy('f1.log', 'f2.log') # shutil.copy2(src, dst),複製檔案和狀態資訊 shutil.copy2('f1.log', 'f2.log') # shutil.ignore_patterns(*patterns) # shutil.copytree(src, dst, symlinks=False, ignore=None),遞迴的去複製資料夾 # 目標目錄不能存在,注意對folder2目錄父級目錄要有可寫許可權,ignore的意思是排除 shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*')) # shutil.rmtree(path[, ignore_errors[, onerror]]),遞迴的去刪除檔案 shutil.rmtree('folder1') # shutil.move(src, dst),遞迴的去移動檔案,它類似mv命令,其實就是重新命名 shutil.move('folder1', 'folder3') # shutil.make_archive(base_name, format, ...),建立壓縮包並返回檔案路徑,例如:zip、tar ''' base_name: 壓縮包的檔名,也可以是壓縮包的路徑。只是檔名時,則儲存至當前目錄,否則儲存至指定路徑,如 data_bak = >儲存至當前路徑;/ tmp/data_bak = >儲存至/tmp/ format:壓縮包種類,“zip”, “tar”, “bztar”,“gztar” root_dir:要壓縮的資料夾路徑(預設當前目錄) owner:使用者,預設當前使用者 group:組,預設當前組 logger:用於記錄日誌,通常是logging.Logger物件 ''' # 將 /data 下的檔案打包放置當前程式目錄 ret = shutil.make_archive("data_bak", 'gztar', root_dir='/data') # 將 /data下的檔案打包放置 /tmp/目錄 ret = shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data')
shutil 對壓縮包的處理是呼叫 ZipFile 和 TarFile 兩個模組來進行的,詳細:
1、 zipfile壓縮解壓縮
import zipfile # 壓縮 z = zipfile.ZipFile('laxi.zip', 'w') z.write('a.log') z.write('data.data') z.close() # 解壓 z = zipfile.ZipFile('laxi.zip', 'r') z.extractall(path='.') z.close()
2、 tarfile壓縮解壓縮
import tarfile # 壓縮 t=tarfile.open('/tmp/egon.tar','w') t.add('/test1/a.py',arcname='a.bak') t.add('/test1/b.py',arcname='b.bak') t.close() # 解壓 t=tarfile.open('/tmp/egon.tar','r') t.extractall('/egon') t.close()
二、subprocess模組(瞭解):執行子程式
subprocess模組允許你去建立一個新的程式讓其執行另外的程式,並與它進行通訊,獲取標準的輸入、標準輸出、標準錯誤以及返回碼等。
更多檢視官網:
import subprocess ''' sh-3.2# ls /Users/nick/Desktop |grep txt$ mysql.txt tt.txt 事物.txt ''' res1 = subprocess.Popen('ls /Users/jieli/Desktop',shell=True, stdout=subprocess.PIPE) res = subprocess.Popen('grep txt$', shell=True,stdin=res1.stdout, stdout=subprocess.PIPE) print(res.stdout.read().decode('utf-8')) # 下面這段等同於上面,但是上面的優勢在於,一個資料流可以和另外一個資料流互動,可以透過爬蟲得到結果然後交給grep。 res1 = subprocess.Popen('ls /Users/jieli/Desktop |grep txt$',shell=True, stdout=subprocess.PIPE) print(res1.stdout.read().decode('utf-8')) # windows下: # dir | findstr 'test*' # dir | findstr 'txt$' res1 = subprocess.Popen(r'dir “C:\Users\Administrator\PycharmProjects\test\函式備課”', shell=True, stdout=subprocess.PIPE) res = subprocess.Popen('findstr test*', shell=True, stdin=res1.stdout, stdout=subprocess.PIPE) # subprocess使用當前系統預設編碼,得到結果為bytes型別,在windows下需要用gbk解碼 print(res.stdout.read().decode('gbk') ) import subprocess ''' sh-3.2# ls /Users/nick/Desktop |grep txt$ mysql.txt tt.txt 事物.txt ''' res1 = subprocess.Popen('ls /Users/jieli/Desktop',shell=True, stdout=subprocess.PIPE) res = subprocess.Popen('grep txt$', shell=True,stdin=res1.stdout, stdout=subprocess.PIPE) print(res.stdout.read().decode('utf-8')) # 下面這段等同於上面,但是上面的優勢在於,一個資料流可以和另外一個資料流互動,可以透過爬蟲得到結果然後交給grep。 res1 = subprocess.Popen('ls /Users/jieli/Desktop |grep txt$',shell=True, stdout=subprocess.PIPE) print(res1.stdout.read().decode('utf-8')) # windows下: # dir | findstr 'test*' # dir | findstr 'txt$' res1 = subprocess.Popen(r'dir “C:\Users\Administrator\PycharmProjects\test\函式備課”', shell=True, stdout=subprocess.PIPE) res = subprocess.Popen('findstr test*', shell=True, stdin=res1.stdout, stdout=subprocess.PIPE) # subprocess使用當前系統預設編碼,得到結果為bytes型別,在windows下需要用gbk解碼 print(res.stdout.read().decode('gbk') )
到此這篇關於Python使用shutil操作檔案、subprocess執行子程式的文章就介紹到這了。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2900134/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python shutil用法 複製檔案與目錄操作Python
- python中使用subprocess批量執行linux下命令PythonLinux
- python中使用subprocess批次執行linux下命令PythonLinux
- Python程式碼打包成可執行檔案的常用方法!Python
- python獲取程式執行檔案路徑的方法其一Python
- subprocess.Popen 如何對子執行緒進行清理執行緒
- python對檔案的操作方法Python
- python常用標準庫(os系統模組、shutil檔案操作模組)Python
- shell指令碼命令 執行python檔案&python命令列執行python程式碼指令碼Python命令列
- windows使用bat檔案 執行java程式WindowsBATJava
- Python檔案操作:finally子句的使用Python
- subprocess.Popen 如何提前終止程式執行
- Python的檔案操作Python
- Python檔案的操作Python
- Python檔案操作方法大總結Python
- 將自己的python程式碼打包成exe的可執行檔案Python
- python3執行.sql檔案PythonSQL
- cmd中如何執行Python檔案Python
- Python 打包 windows 可執行的 exe 檔案PythonWindows
- Python標準庫04 檔案管理 (部分os包,shutil包)Python
- Python操作檔案Python
- python對檔案的操作Python
- 教你解決win10系統exe檔案不能執行無反應的方法Win10
- webpack同型別檔案執行不同loader操作Web型別
- python subprocessPython
- Python 使用ConfigParser操作ini配置檔案教程。Python
- 手機使用python操作圖片檔案Python
- 用PostgreSQL執行檔案中的SQL程式SQL
- Python標準庫分享之檔案管理 (部分os包,shutil包)Python
- 使用Python模仿檔案行為Python
- Python如何生成windows可執行的exe檔案PythonWindows
- Python驅動ansys執行apdl檔案Python
- docker執行javaWeb服務,操作檔案異常DockerJavaWeb
- python_檔案操作Python
- 1.4.0 Python檔案操作Python
- Python 檔案操作(一)Python
- python 操作整理檔案Python
- win10系統執行word時出現~$開頭的檔案操作方法Win10