我想檢查安裝在我係統中的軟件的md5sum。我將首先解釋環境,然後我會解釋這個問題。有一個目錄/ home /軟件。在這個目錄中有多個文件夾,比如software1,software2等等。在每個這些文件夾中都有一個包含check * .md5文件(check123.md5)的文件夾(比如說folder1)。它是我正在嘗試閱讀的這個文件的內容。使用子進程檢查md5sum
如:
>>cd /home/software/software1
>>md5sum -c folder1/check*.md5
當我試圖在Linux命令行以上兩個命令,我得到的輸出。 我想在python中編寫腳本。所以最初我使用os.system,然後再次運行。但現在我的需求是這樣的,我必須使用子進程。但它不再工作。
我的代碼甚至可以在python命令行中模擬。
import subprocess, os
os.chdir(/home/software/software1)
var = "md5sum -c folder1/check*.md5"
vars = shlex.split(var)
p1 = subprocess.Popen(vars, stdout = open ("/tmp/test.txt", "a"))
輸出如下:的md5sum:文件夾1 /支票* .md5:沒有這樣的文件或目錄。
現在我意識到只有當我不在正確的目錄中時纔會出現此錯誤。但是一個os.cwd()表明我在正確的目錄中。
有誰知道問題是什麼?
爲什麼不使用Python的原生MD5方法?這在這裏描述:http://stackoverflow.com/questions/16874598/how-do-i-calculate-the-md5-checksum-of-a-file-in-python – keda
http://stackoverflow.com/a/21565932/5087125似乎更好,其中有人實際上基準hashlib反對在子進程中運行md5sum。這似乎不值得,內置的方式更容易啓動。 – pvg