将参数从批处理文件传递到Python

时间:2015-01-07 03:23:55

标签: python batch-file exception null arguments

我正在尝试将参数从批处理文件传递给python,如下所示。似乎没有任何内容传递给'样本'变量。我的问题是

  1. 如何正确地获得参数?
  2. 如何在运行.bat执行此python时检查空值错误?执行
  3. 时,我可能无法在IDE中看到控制台日志

    我的批处理文件(.bat)

    start python test.py sample.xml
    

    我的python文件(test.py)

    def main(argv):
        sample = argv[1]   #How to get argument here?
        tree = ET.parse(sample)
        tree.write("output.xml")
    
    if __name__ == '__main__':
        main(sys.argv[1:])
    

2 个答案:

答案 0 :(得分:3)

在您的代码中,您正在跳过第一个参数两次

使用main调用

sys.argv[1:],跳过第一个参数(程序名称);但然后main本身使用argv[1] ...再次跳过第一个参数。

只需将sys.argv传递给main即可,例如,你会没事的。

或者,或许更优雅的是,请拨打main(sys.argv[1:]),然后在main中使用argv[0]

答案 1 :(得分:0)

使用argparse https://docs.python.org/3/library/argparse.html

例如:在你的python文件中

import argparse

parser = argparse.ArgumentParser(description='Your prog description.')
parser.add_argument('-f','--foo', help='Description for foo argument', required=True)
    :
    :
args = parser.parse_args()

在你的bat文件中

python prog.py -f <foo arg here>