0

我知道 Python 的东西,如果我使用交互式解释器并且我编写'\\ '它会打印'\\ ',但如果我编写print '\\ '它会打印'\ '

我想要做的是(在一个名为 的脚本中p.py):

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

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

因此,作为 provious 代码的输出,我得到:

local:$ string with spaces

并不是

local:$ string\ with\ spaces 

我已经尝试过硬编码字符串和 Python 中的所有其他内容,但我想问题出在 shell 字符串上。

我怎么能解决这个问题?

它可以帮助找到替代解决方案,我正在尝试使用mv命令从 python 移动文件,并且该文件的名称中有空格。

4

1 回答 1

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

在该行中,最后一个字符串'\ '将尝试转义一个空格,即使这不是转义序列。如果您希望它成为带有前一个退格的空格,您可以转义退格 ( '\\ '),或者您可以使用将忽略所有转义序列 ( r'\ ') 的原始字符串。

于 2012-11-25T18:56:48.047 回答