2009-04-24 32 views
6

Tôi muốn sử dụng os.system("md5sum myFile") và có kết quả được trả về từ hệ thống os.system thay vì chỉ được chạy trong một vỏ con nơi nó được lặp lại.Gọi hệ thống Python là kết quả chuỗi

Nói tóm lại tôi muốn làm điều này:

resultMD5 = os.system("md5sum myFile") 

Và chỉ có md5sum trong resultMD5 và không lặp lại.

Trả lời

11

subprocess là tốt hơn so với sử dụng os.system hoặc os.popen

import subprocess 
resultMD5 = subprocess.Popen(["md5sum","myFile"],stdout=subprocess.PIPE).communicate()[0] 

Hoặc chỉ cần tính toán md5sum mình với các mô-đun hashlib.

import hashlib 
resultMD5 = hashlib.md5(open("myFile").read()).hexdigest() 
+1

+1 với hashlib, cách tốt nhất để làm điều đó, không phụ thuộc vào tệp thực thi bên ngoài. – nosklo

0

Có lẽ bạn nên sử dụng mô-đun subprocess làm phần thay thế cho os.system.

+0

Bạn có thể đánh giá không? –

+0

@Filip Ekberg: những gì Douglas Leeder đã nói :-) – hyperboreean

0
import subprocess 

p = subprocess.Popen("md5sum gmail.csv", shell=True, stdout=subprocess.PIPE) 
resultMD5, filename = p.communicate()[0].split() 
print resultMD5 
+0

không cần phải đi qua vỏ để chạy md5sum. Không sử dụng shell = True – nosklo

Các vấn đề liên quan