如何使用os.system为几个目录运行脚本。我试过这个:
listofdirnumbers = [1, 2, 3, 4, 5]
for i in range(len(listofdirnumbers)):
os.system("script.py 'arg1 "mydir_%d"%i arg2 '")但它给了我错误的无效语法。
另一个问题是,如果我想输入几个参数,它是如何工作的-这是正确的吗?
(os.system("script.py 'arg1 arg2 arg3'"))发布于 2014-06-18 14:11:36
您希望执行的命令(包括参数)应该作为字符串传递。在Python中没有像"script.py 'arg1 "mydir_%d"%i arg2 '"这样的嵌套字符串这样的概念。
listofdirnumbers = [1, 2, 3, 4, 5]
for i in range(len(listofdirnumbers)):
os.system("script.py arg1 mydir_%d arg2" % i)可以传递多个参数,例如
os.system("script.py arg1 arg2 arg3")发布于 2014-06-18 14:13:32
问题是双引号中的双引号。你可能想写这样的东西:
os.system("""script.py 'arg1 "mydir_%d" arg2 '""" % i)或者,转义双引号:
os.system("script.py 'arg1 \"mydir_%d\" arg2 '" % i)即使双引号在这种情况下是无用的..。
我真的不知道为什么要在命令中添加单引号。单引号分隔字符串将被视为一个参数。在本例中,script.py将收到表单arg1 "my_dir_N" arg2的一个参数,其中N是一个整数。如果您想向程序传递多个参数,请不要用单引号对它们进行分组。
此外,您应该完全避免使用os.system。subprocess模块提供了一个更加安全和灵活的接口。使用subprocess的代码如下:
import subprocess
for i in listofdirnumbers:
subprocess.call(['script.py', 'arg1', 'my_dir_%d' % i, 'arg2'])(这将为script.py提供三个参数)。
https://stackoverflow.com/questions/24287483
复制相似问题