我想保留我的脚本的相同名称,但有一个用于自动执行(不会采用任何参数),还有一个用于临时执行(这将采用参数)。下面的代码会有用吗?
#myPythonFile.py
import sys
def main():
if argv[1] is None:
#Do something
elif:
#Do something else
if __name__ == '__main__':
main()
然后我可以打电话
myPythonFile.py
或
myPythonFile.py 'param1', 'param2'
正确?
答案 0 :(得分:0)
以下是检查传递的参数的方法:
#!/usr/bin/python
import sys
print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)
以下是它的工作原理
~$ ./arg.py 1 2 3
Number of arguments: 4 arguments.
Argument List: ['./arg.py', '1', '2', '3']
~$ ./arg.py 2 3
Number of arguments: 3 arguments.
Argument List: ['./arg.py', '2', '3']
但是如果你使用optparse或argeparse:
def process_arguments():
"""
Process our command line arguments, the "master" config file,
and the file holding one or more database connection strings.
"""
parser = OptionParser()
parser.add_option('--input', '-i',
type='string',
dest='input_file',
action='store',
default='something',
help='The input file for method')
parser.add_option('--output', '-o',
type='string',
dest='output_file',
action='store',
default='anythig',
help='The output file for method')
parser.add_option('--debug', '-d',
type='string',
dest='debug',
action='store',
default=None,
help='Optional debug argument')
opts, args = parser.parse_args()
return opts, args
if __name__ == '__main__':
options, arguments = process_arguments()
print options, arguments
以下是它的外观
~$ ./opt.py
{'input_file': 'something', 'output_file': 'nothing', 'debug': None}
[]
~$ ./opt.py -i file_name dir_name
{'input_file': 'file_name', 'output_file': 'nothing', 'debug': None}
['dir_name']