Tôi đang chạy Windows 7 và Windows 2.7 32 bit.Đối số dòng lệnh Python (Windows)
Tôi đang cố gắng viết một dòng lệnh Python script có thể chạy từ CMD. Tôi đang cố gắng gán một giá trị cho sys.argv [1]. Mục đích của kịch bản của tôi là tính toán giá trị băm MD5 của một tệp. Tệp này sẽ được nhập vào khi kịch bản lệnh được gọi trong dòng lệnh và do đó, sys.argv [1] sẽ đại diện cho tệp được băm.
Dưới đây là code của tôi dưới đây:
import sys
import hashlib
filename = sys.argv[1]
def md5Checksum(filePath):
fh = open(filePath, 'rb')
m = hashlib.md5()
while True:
data = fh.read(8192)
if not data:
break
m.update(data)
return m.hexdigest()
# print len(sys.argv)
print 'The MD5 checksum of text.txt is', md5Checksum(filename)
Whenver tôi chạy kịch bản này, tôi nhận được một lỗi:
filename = sys.argv[1]
IndexError: list index out of range
Để gọi kịch bản của tôi, tôi đã viết "test.txt script.py " ví dụ. Cả tập lệnh và tệp nguồn đều nằm trong cùng một thư mục. Tôi đã thử nghiệm len (sys.argv) và nó chỉ trở lại như có chứa một giá trị, đó là tên kịch bản python.
Mọi đề xuất? Tôi chỉ có thể giả định đó là cách tôi gọi mã thông qua CMD
Bạn có một tệp mở đang xử lý ở đó. Sử dụng 'với mở (filePath, 'rb') như fh:' thay thế. – wim
xem http://stackoverflow.com/questions/2640971/windows-is-not-passing-command-line-arguments-to-python-programs-executed-from-t# để biết thêm thông tin – laike9m