【问题标题】:Reading string arguments passed from batch file to python script读取从批处理文件传递到 python 脚本的字符串参数
【发布时间】:2019-03-08 12:08:18
【问题描述】:

我看过多篇关于传递字符串的帖子,但无法找到从批处理文件中读取传递给 python 脚本的字符串的好解决方案。这是我的问题。

我正在从批处理文件中调用 python 脚本并传递参数。

string_var = "123_Asdf"

bat 'testscript.py  %string_var%'

我的 python 代码中有以下内容。

import sys

passed_var = sys.argv[1]

当我运行上面的代码时,我总是看到下面的错误。

passed_var = sys.argv[1]
IndexError: list index out of range

以前有人见过这个问题吗?我只传递字符串,并希望它作为我传递给脚本的第一个参数的一部分被读取。

【问题讨论】:

  • 您是否尝试过传递字符串而不是变量?也许变量是空的?
  • 还要运行 python 脚本,您需要在命令前面加上 python,例如python myscript.py your_argument
  • 这就是我调用代码的方式。 bat 'D:\\BuildTools\\tools\\python27\\python.exe testscript.py %string_var%

标签: python batch-file parameter-passing


【解决方案1】:

试试这个:

import sys
for x,parameter in enumerate(sys.argv):
    print(x, parameter)

【讨论】:

    【解决方案2】:

    如果我正确阅读了您的问题及其格式,我认为您的 .bat 文件应为:

    Set string_var="123_Asdf"
    "D:\BuildTools\tools\python27\python.exe" testscript.py %string_var%
    

    或者更好:

    Set "string_var=123_Asdf"
    "D:\BuildTools\tools\python27\python.exe" testscript.py "%string_var%"
    

    %string_var% 可以带或不带双引号来传递。

    【讨论】:

      【解决方案3】:

      您的批处理文件应该更简单一些,请确保您的 PATH 设置正确,否则这将不起作用。

      python testscript.py [argument]
      

      【讨论】:

        猜你喜欢
        • 2015-08-18
        • 2011-09-15
        • 2017-02-11
        • 1970-01-01
        • 2014-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多