我有一個名爲mymodule.py
的腳本,它使用了argparse。我希望能夠編寫一個腳本fakemicro.py
,它將能夠從mymodule.py
導入主模塊並將參數傳遞給它。 我的代碼是根據各地Brian的答案在這裏:https://www.reddit.com/r/learnpython/comments/3do2wr/where_to_put_argparse/這裏接受的答案:In Python, can I call the main() of an imported module?導入python模塊,同時傳遞argparse列表
我不斷收到意想不到的錯誤,所以我希望你能有所幫助。
這裏是mymodule.py
內容:
#!/usr/bin/env python
import argparse
import sys
def parse_args(args):
parser = argparse.ArgumentParser(
description='yeah'
)
parser.add_argument(
'-i', nargs='+',
help='full path of input directory', required=True
)
parser.add_argument(
'-o', '-output',
help='full path of output directory', required=True
)
parsed_args = parser.parse_args()
return parsed_args
def main(args):
args = parse_args(args)
print args.i
print args.o
if __name__ == '__main__':
main(sys.argv[1:])
這裏是fakemicro.py
:
#!/usr/bin/env python
import mymodule
import sys
mymodule.main(['-i', sys.argv[1], '-o', sys.argv[2]])
我期待的是,如果我輸入了這會起作用: mymodule.py -i path/to/1 -o path/to/2
在命令行 但而是我的劇本爆發了。
$ fakemicro.py path/to/2 path/to/3
usage: fakemicro.py [-h] -i I [I ...] -o O
fakemicro.py: error: argument -i is required
我認爲mymodule.py
會看到,我通過 mymodule.main(['-i', sys.argv[1], '-o', sys.argv[2]])
通過-i arg1 -o arg2
?
這裏是什麼mymodule.py
輸出看起來在以其自身在命令行中運行,如:
$ mymodule.py -i 1 -o 2
['1']
2
任何幫助將非常感激。謝謝!
'mymodule'不能自行運行,是嗎?你沒有使用'args'參數。 – hpaulj
很抱歉,我沒有導入sys。我添加了args = parse_args(args),現在mymodule.py在按原樣運行時返回期望值。我會編輯我原來的帖子來反映這一點。 –