這個腳本的目的是從目錄的每個文件中提取md5校驗和作爲源代碼,然後(我正在處理它)在目標上執行腳本驗證它已正確複製。python從iteration和子進程保存輸出以進行校驗
#!/usr/bin/env python
import os
from sys import *
import subprocess
script, path = argv
destination = "./new_directorio/"
archivo = "cksum.txt"
def checa_sum(x):
ck = "md5 %s" % x
p = subprocess.Popen(ck, stdout=subprocess.PIPE, shell=True)
(output, err) = p.communicate()
out = open(archivo,'w')
out.write("%s" % (output))
out.close()
files = [f for f in os.listdir(path) if os.path.isfile(f)]
for i in files:
if not "~" in i:
checa_sum(i)
是什麼讓我的是一個文件: 裏面的文件「cksum.txt」,但只有一個結果。
bash-3.2$ more cksum.txt
MD5 (victor) = 4703ee63236a6975abab75664759dc29
bash-3.2$
的其他嘗試,而不是「開放」,「寫」的,「親密」結構是使用以下:
def checa_sum(x):
ck = "md5 %s" % x
p = subprocess.Popen(ck, stdout=subprocess.PIPE, shell=True)
(output, err) = p.communicate()
with open(archivo,'w') as outfile:
outfile.write(output)
爲什麼只把我丟時,我想到了以下結果一個結果在文件中?:
MD5 (pysysinfo.py) = 61a532c898e6f461ef029cee9d1b63dd
MD5 (pysysinfo_func.py) = ac7a1c1c43b2c5e20ceced5ffdecee86
MD5 (pysysinfo_new.py) = 38b06bac21af3d08662d00fd30f6c329
MD5 (test) = b2b0c958ece30c119bd99837720ffde1
MD5 (test_2.py) = 694fb14d86c573fabda678b9d770e51a
MD5 (uno.txt) = 466c9f9d6a879873688b000f7cbe758d
MD5 (victor) = 4703ee63236a6975abab75664759dc29
此外,我不知道如何解決每次迭代之間的空間。我也在尋找。
這樣做後,我會比較每個項目,以驗證一旦複製到目的地的完整性。
我計劃通過電影文件計算非常大的文件:每幀1.5G有時(.ARI。R3D文件)所以需要確保trasnfers是okey。讓我實現你的代碼看起來非常方便。 – x1c70r 2015-04-02 17:21:32
我擔心這樣的大文件,你可能運行速度更快,從控制檯解析md5,但你仍然可以組合方法。我認爲最大的文件是700 MB左右,但我已經測試了更小的文件 – 2015-04-02 17:42:49
btw。如果你想在服務器上運行相同的作業來比較文件,這是你在「常規」基礎上做的,那麼你應該檢查fabric:http://www.fabfile.org – 2015-04-02 17:44:43