Câu trả lời của Martijen có lý, nhưng nó đã thiếu một điều gì đó quan trọng mà người khác có thể thấy rõ ràng nhưng tôi lại khó hiểu.
Trong phiên bản mà bạn sử dụng argparse, bạn cần có dòng này trong nội dung chính.
args = parser.parse_args(args)
Thông thường, khi bạn đang sử dụng argparse chỉ trong một script bạn chỉ viết
args = parser.parse_args()
và parse_args tìm các đối số từ dòng lệnh. Nhưng trong trường hợp này, hàm main không có quyền truy cập vào các đối số dòng lệnh, vì vậy bạn phải cho argparse biết các đối số là gì.
Đây là một ví dụ
import argparse
import sys
def x(x_center, y_center):
print "X center:", x_center
print "Y center:", y_center
def main(args):
parser = argparse.ArgumentParser(description="Do something.")
parser.add_argument("-x", "--xcenter", type=float, default= 2, required=False)
parser.add_argument("-y", "--ycenter", type=float, default= 4, required=False)
args = parser.parse_args(args)
x(args.xcenter, args.ycenter)
if __name__ == '__main__':
main(sys.argv[1:])
Giả sử bạn đặt tên này là mytest.py Để chạy nó, bạn có thể thực hiện bất kỳ thao tác nào trong số này từ dòng lệnh
python ./mytest.py -x 8
python ./mytest.py -x 8 -y 2
python ./mytest.py
cái nào trả về tương ứng
X center: 8.0
Y center: 4
hoặc là
X center: 8.0
Y center: 2.0
hoặc là
X center: 2
Y center: 4
Hoặc nếu bạn muốn chạy từ một tập lệnh python khác, bạn có thể làm
import mytest
mytest.main(["-x","7","-y","6"])
cái nào trả về
X center: 7.0
Y center: 6.0
myModule.main()
. Bạn đã thử những gì cho đến nay?