Python 使用其他脚本中的OptionParser参数调用main()
我有一个modulePython 使用其他脚本中的OptionParser参数调用main(),python,arguments,main,Python,Arguments,Main,我有一个modulemyModule.py,它接受一个输入文件和一个数字,使用解析参数并打印它们: python myModule.py-i“此文件”-n 100 ('this_file','100') 我试图从另一个脚本调用它,以便可以处理返回的值。在遵循中的建议后,我将从模块中导入main(),并制作一个args:values字典,然后将其作为输入提供给导入的main()函数: 但是,这不起作用,并导致错误: Traceback (most recent call last): File
myModule.py
,它接受一个输入文件和一个数字,使用解析参数并打印它们:
python myModule.py-i“此文件”-n 100
('this_file','100')
我试图从另一个脚本调用它,以便可以处理返回的值。在遵循中的建议后,我将从模块中导入main()
,并制作一个args:values
字典,然后将其作为输入提供给导入的main()
函数:
但是,这不起作用,并导致错误:
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'
这张照片是:
(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()
的脚本:
调用模块.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)
为什么不使用
argparse
optparse
长期以来一直不受欢迎。您实际上从未使用过参数,因为您已经调用了get_args函数。并覆盖参数variable@Chris_Rands-这有什么帮助?我也有同样的问题,即使我得到的脚本的main()函数没有任何输入参数。因此,当我使用可选参数从命令行调用脚本时,它工作得很好,但是当我导入脚本,然后使用列表中的可选参数调用main()函数时,它不工作,因为main函数没有输入参数。
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)