在for循环中使用python脚本

时间:2019-03-03 11:03:02

标签: python

我想在for循环中插入一个python脚本(仅打印输出)。问题:代替将“ i”作为变量-它仅显示“ i”,而不是“ string1”,“ string2”。 我尝试过:

for i in ['string1, string2']:
    os.system("python scriptWhichPrintsInput.py i")
...
i

2 个答案:

答案 0 :(得分:3)

您应该使用格式或字符串串联:

os.system("python scriptWhichPrintsInput.py " + i)

或者:

os.system("python scriptWhichPrintsInput.py {}".format(i))

请参阅Python 2Python 3的文档

答案 1 :(得分:2)

不太确定为什么要用这种方法,但是可以了。

TLDR:

首先,您需要在运行时动态解析参数(不仅仅是字符串中的char'i'!)因此,

for i in ['string1', 'string2']:
    os.system("python scriptWhichPrintsInput.py {}".format(i)) 
...
i
  • 有关字符串格式的信息,请参见:the docs here
  • 还通过关闭撇号来固定(我认为是错字)在您的字符串上。

然后,我假设您的其他python脚本是某个函数foo(),它需要一个输入i,例如;

foo(i, *args, **kwargs):
    # insert your script function here...
    pass

漫漫长路:

这可能就是我要做的。

我将使脚本可导入(称为os),而不是解析具有scriptWhichPrintsInput.py依赖项的脚本的字符串表示形式,然后确保它位于我的Python路径上(更多信息{ {3}})。例如

# your scriptWhichPrintsInput.py file
foo(i, *args, **kwargs):
    # do something with your input...
    print(i)
    return

然后在您的其他脚本中(如上所述)

# your scriptWhichPrintsInput.py file
from .scriptWhichPrintsInput import foo if your script is in the same folder, easy!

for i in ['string1', 'string2']:
    foo(i)
...
i # do whatever you need to do here!