如何在os.system中使用两个引号?PYTHON

5

我在使用os.system时遇到了一点问题,当我尝试使用两个引号时.. 我将要用Python启动一个程序,该目录有多个空格,为了在CMD中启动具有多个空格的内容,显然需要在其周围放置双引号。

问题来了.. 我的代码看起来像这样:

import os
os.system("C:/t est/hello")

由于我使用了os.system,它显然只会将C:/test/hello发送到CMD中。

现在我需要用引号将"C:/test/hello"发送到cmd中,但我需要Python理解我需要两个引号。有人可以帮帮我吗?


似乎你只需要转义字符。print "Hello "world"" 输出 'Hello "World"'。 - David
@summea 不,我需要os.system将"C:/t est/hello"发送到CMD,而不是只发送C:/t est/hello而没有双引号,因为没有引号CMD会直接进入c:/t,因为其中有一个空格。 - Jon smith
或者使用单引号并在字符串内包含双引号,例如:os.system('"C:\\test\\hello"'),或在单引号前加上r以将字符串按原样处理,例如:os.system(r'"C:\test\hello"') - Paulo Bu
1个回答

20
如果您想在命令中添加引号,只需这样做即可。可能最简单的方法是使用单引号来表示字符串:
os.system('"C:/t est/hello"')

如果你想在由双引号包围的字符串中写入一个双引号,那么你需要对其进行转义。方法如下:

os.system("\"C:/t est/hello\"")

然而,使用subprocess要简单得多,并且让它处理引用更加方便。例如:

subprocess.check_call(['ls', 'some directory with spaces in'])

即使是 os.system()文档也建议使用 subprocess

子进程模块提供了更强大的生成新进程和检索结果的功能; 使用该模块比使用此函数更可取。有关一些有用的示例,请参见子进程文档中的“使用 subprocess 模块替换旧函数”部分。


给出了一个错误:/,它需要像这样一些东西,我认为应该是“DIRECTORY HERE”。 - Jon smith
1
不仅 subprocess 能够工作,而且它还设计得非常出色。我刚刚完成了一个大型开发项目,我们将所有构建脚本都迁移到了 Python 上,所有运行都在 subprocess 上进行。如果使用 os.system(),这将是一场噩梦。但是使用 subprocess 却非常容易。我无法高度赞扬它。 - David Heffernan
这就是它的用途。不知道为什么人们还在纠结使用 os.system() ... - glglgl
哇,谢谢你的子进程提示 - 帮了很大的忙) - Maryna Klokova

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接