我正在尝试将参数从批处理文件传递给python,如下所示。似乎没有任何内容传递给'样本'变量。我的问题是
我的批处理文件(.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:])
答案 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>