我有python代碼,它將下載.war
文件並將其放入由變量path
指定的路徑中。如何將特定的戰爭文件提取到特定的文件夾
現在我希望從該戰爭中提取特定文件到特定文件夾。
但還是被擊中了這裏:
os.system(jar -xvf /*how to give the path varible here*/ js/pay.js)
我不知道如何傳遞變量path
到os.system
命令。
我對python很陌生,請幫助我。
我有python代碼,它將下載.war
文件並將其放入由變量path
指定的路徑中。如何將特定的戰爭文件提取到特定的文件夾
現在我希望從該戰爭中提取特定文件到特定文件夾。
但還是被擊中了這裏:
os.system(jar -xvf /*how to give the path varible here*/ js/pay.js)
我不知道如何傳遞變量path
到os.system
命令。
我對python很陌生,請幫助我。
如果你真的想用os.system
,shell命令行作爲字符串傳遞,並且您可以傳遞任何您想要的字符串。所以:
os.system('jar -xvf "' + pathvariable + '" js/pay.js)
或者你可以使用{}
或%s
格式化等
然而,你可能不希望使用os.system
。
首先,如果你想運行其他程序,幾乎總是使用subprocess
模塊更好。例如:
subprocess.check_call(['jar', '-xvf', pathvariable, 'js/pay.js'])
正如你所看到的,你可以傳遞的參數,而不是試圖找出如何把一個串起來的列表(和處理逃逸,報價和所有那些亂七八糟)。還有很多其他的優點,主要在文檔本身中描述。
但是,您可能根本不想運行war
工具。正如jimhark所說,WAR file只是一種特殊的JAR file,它只是一種特殊的ZIP file。爲了創建它們,通常需要使用特定於JAR/WAR的工具(您需要驗證佈局,確保清單是ZIP目錄中的第一個條目,處理包簽名等),但是爲了擴展他們,任何ZIP工具都可以工作。而Python有內置的ZIP支持你想要做什麼可能是如此簡單:
import zipfile
with zipfile.ZipFile(pathvariable, 'r') as zf:
zf.extract('js/pay.js', destinationpathvariable)
IIRC,你只能直接在2.7和3.2以上版本使用ZipFile
在with
聲明,所以如果你是例如2.6或3。1,你要做到這一點間接:
from contextlib import closing
import zipfile
with closing(zipfile.ZipFile(pathvariable, 'r')) as zf:
zf.extract('js/pay.js', destinationpathvariable)
或者,如果這僅僅是一個快速&骯髒的腳本,一旦它完成退出,你可以逃脫:
import zipfile
zf = zipfile.ZipFile(pathvariable, 'r')
zf.extract('js/pay.js', destinationpathvariable)
但我儘量使用with
聲明,因爲這是一個很好的習慣。
是不是war
文件zip
文件類型? Python支持zipfile(單擊文檔頁面的鏈接)。
你可以使用os.environ,它包含所有的環境變量。 這是一個字典,所以你可以使用它像:
pypath = os.environ['PYTHONPATH']
現在,如果你的意思是這是一個常見的蟒蛇變量,只是用它喜歡:
var1 = 'pause'
os.system('@echo & %s' % var1)
我收到一個錯誤,因爲'NameError:name'ZipFile'未定義' – sriram
'import zipfile' first first。然後'zipfile.ZipFile(pathvariable,'r')...'。它可能取決於你的python版本,但只是閱讀文檔,你會看到。 –
謝謝你的作品! – sriram