星期日, 3月 28, 2010

Download File and Check MD5

每次都要重複下載,使用md5sum來確認等重複的動作,乾脆寫個script來直接作吧!
#!/usr/bin/python
import os, sys, re, subprocess
#argument checking
if len(sys.argv) <= 1:
        print "Usage:%s URL [md5]" % (sys.argv[0])
        sys.exit(0)
]
print "Downloading..."
args = ["/usr/bin/wget", sys.argv[1]
p = subprocess.Popen(args)
p.wait()

print "Checking MD5..."
filename = re.split("/", sys.argv[1])[-1]
if len(sys.argv) == 3:
        md5file = open("tmp.md5", "w+")
        md5file.write("%s  %s\n" % (sys.argv[2], filename))
        md5file.close()
        p = subprocess.Popen(["/usr/bin/md5sum", "-c", "tmp.md5"])
        p.wait()
        os.remove("tmp.md5")
整個script做的動作是
1.下載檔案,並解析該檔名
2.如果有提供MD5就進行MD5 check

另外subprocess是2.4版後用來執行系統中程式用的
class subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
可以只給arg,用sequence的形式,好處是都可以直接自行指定stdin, stdout, stderr。

沒有留言: