使用可选参数调用python文件

时间:2016-12-12 19:15:33

标签: python-2.7 sys

我想保留我的脚本的相同名称,但有一个用于自动执行(不会采用任何参数),还有一个用于临时执行(这将采用参数)。下面的代码会有用吗?

#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'

正确?

1 个答案:

答案 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']