将参数从批处理文件传递给Python [英] Passing Argument from Batch File to Python
问题描述
我试图将批处理文件中的参数传递给python,如下所示。似乎没有任何东西已经传递给'sample'变量。我的问题是
I am trying to pass argument from batch file to python as following. It seems nothing has passed to 'sample' variable. My questions are
- 如何正确获取参数?
- 当我运行.bat执行这个python时如何检查空点错误?执行
我的批处理文件(.bat)
My batch file (.bat)
start python test.py sample.xml
我的python文件(test.py)
My python file (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:])
推荐答案
在你的代码中
主要
被调用 sys.argv [1:]
,跳过第一个参数(程序名);但是然后 main
本身使用 argv [1]
...再次跳过其第一个参数。
main
gets called with sys.argv[1:]
, skipping the first argument (program name); but then main
itself uses argv[1]
... skipping its first argument again.
只需将 sys.argv
不变更为 main
你可能会很好,例如。
Just pass sys.argv
untouched to main
and you'll be fine, for example.
或者更优雅的是,调用 main(sys.argv [1:])
,但是在 main
中,使用 argv [0]
!
Or, perhaps more elegantly, do call main(sys.argv[1:])
, but then, in main
, use argv[0]
!
这篇关于将参数从批处理文件传递给Python的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!