使用另一个脚本中的OptionParser参数调用main()

时间:2018-02-12 15:51:55

标签: python arguments main

我有一个模块myModule.py,它接受​​一个输入文件和一个数字,使用OptionParser解析参数并打印出来:

python myModule.py -i "this_file" -n 100
('this_file', '100')

我试图从另一个脚本调用它,以便我可以使用返回的值。在this question中遵循建议后,我从我的模块导入main()并制作args:values字典,然后我将其作为输入提供给导入的main()函数:< / p>

然而,这不起作用并因错误而死:

Traceback (most recent call last):
  File "call_module.py", line 8, in <module>
    fileIn, number_in = main(**args)
TypeError: main() got an unexpected keyword argument 'in_file'

我还尝试将args作为列表传递:

args = ['-i','this_file', '-n', 100]
fileIn, number_in = main(args)

打印:

(None, None)
(None, None)

有人能说出我在这里做错了什么吗?

这是我的模块包含main()

myModule.py

#!/usr/bin/env python
import os, re, sys
from optparse import OptionParser

def get_args():
    parser = OptionParser()

parser.add_option("-i", \
                  "--in_file", \
                  dest="in_file",
                  action="store")

parser.add_option("-n", \
                  "--number", \
                  dest="number",
                  action="store")

options, args = parser.parse_args()

return(parser)

def main(args):
    parser = get_args()
    options, args = parser.parse_args()

    fileIn   = options.in_file
    number_in   = options.number

    print(fileIn, number_in)
    return(fileIn, number_in)

if __name__ == "__main__":
    # sys.exit(main())
    parser = get_args()
    args = parser.parse_args()
    main(args)

我用来调用main()的脚本:

call_module.py

import os, re, sys
from myModule import main, get_args


# args = { "in_file": 'this_file',
#         "number" : 100 }

args = ['-i','this_file', '-n', 100]
print(args)

fileIn, number_in = main(args)

print(fileIn, number_in)

0 个答案:

没有答案