2012-11-25 56 views
0

我知道Python的事情,如果我使用交互式解释器,我写'\\ '它打印'\\ ',但如果我写print '\\ '它打印'\ 'Python和终端 - 特殊字符串

我试图做的是(在一个叫p.py脚本):

import os 
os.system('echo ' + 'string with spaces'.replace(' ', '\ ')) 

显然它不会让我做这件事。我的意思是,Python设法添加两个反斜杠,而不是一个,但我认为它只在交互模式下才这样做,但终端在通过特殊字符如\时忽略它们。

所以,作为页首页上页代码的输出,我得到:

local:$ string with spaces 

,而不是

local:$ string\ with\ spaces 

我已经尝试过硬编码字符串,一切都在Python的人,但我想这个问题与外壳字符串。

我该如何解决这个问题?

它可以帮助找到替代解决方案,我试图做的是从mv命令移动一个文件从python,这个文件的名称中有空格。

+0

只是好奇,为什么你想使用反斜杠? shell使用引号注释反斜杠来不把空格视为特殊的。例如echo“带空格的字符串”。我觉得我在这里错过了一些东西。 –

回答

2
os.system('echo ' + 'string with spaces'.replace(' ', '\ ')) 

在该行,最后一个字符串'\ '将试图逃跑的空间,尽管这不是一个转义序列。如果您希望它成为带有前一个退格的空格,则可以退出退格('\\ '),也可以使用将忽略所有转义序列的原始字符串(r'\ ')。