首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在os.system中更改目录

在os.system中更改目录
EN

Stack Overflow用户
提问于 2014-06-18 13:55:06
回答 2查看 1.8K关注 0票数 0

如何使用os.system为几个目录运行脚本。我试过这个:

代码语言:javascript
复制
listofdirnumbers = [1, 2, 3, 4, 5]
for i in range(len(listofdirnumbers)):
    os.system("script.py 'arg1 "mydir_%d"%i arg2 '")

但它给了我错误的无效语法。

另一个问题是,如果我想输入几个参数,它是如何工作的-这是正确的吗?

代码语言:javascript
复制
(os.system("script.py 'arg1 arg2 arg3'"))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-18 14:11:36

您希望执行的命令(包括参数)应该作为字符串传递。在Python中没有像"script.py 'arg1 "mydir_%d"%i arg2 '"这样的嵌套字符串这样的概念。

代码语言:javascript
复制
listofdirnumbers = [1, 2, 3, 4, 5]
for i in range(len(listofdirnumbers)):
    os.system("script.py arg1 mydir_%d arg2" % i)

可以传递多个参数,例如

代码语言:javascript
复制
os.system("script.py arg1 arg2 arg3")
票数 0
EN

Stack Overflow用户

发布于 2014-06-18 14:13:32

问题是双引号中的双引号。你可能想写这样的东西:

代码语言:javascript
复制
os.system("""script.py 'arg1 "mydir_%d" arg2 '""" % i)

或者,转义双引号:

代码语言:javascript
复制
os.system("script.py 'arg1 \"mydir_%d\" arg2 '" % i)

即使双引号在这种情况下是无用的..。

我真的不知道为什么要在命令中添加单引号。单引号分隔字符串将被视为一个参数。在本例中,script.py将收到表单arg1 "my_dir_N" arg2的一个参数,其中N是一个整数。如果您想向程序传递多个参数,请不要用单引号对它们进行分组。

此外,您应该完全避免使用os.systemsubprocess模块提供了一个更加安全和灵活的接口。使用subprocess的代码如下:

代码语言:javascript
复制
import subprocess

for i in listofdirnumbers:
    subprocess.call(['script.py', 'arg1', 'my_dir_%d' % i, 'arg2'])

(这将为script.py提供三个参数)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24287483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档