我知道Python的事情,如果我使用交互式解释器并且我写'\\ '
它会打印'\\ '
但是如果我写print '\\ '
它会打印'\ '
。< / p>
我要做的是(在名为p.py
的脚本中):
import os
os.system('echo ' + 'string with spaces'.replace(' ', '\ '))
显然它不会让我这样做。我的意思是,Python设法添加两个反斜杠而不是一个,但我认为它只在交互模式下才这样做,但终端在通过像\
这样的特殊字符时会忽略它们。
因此,作为原始代码的输出,我得到:
local:$ string with spaces
而不是
local:$ string\ with\ spaces
我已经在Python中尝试过硬编码字符串和其他所有内容,但我想问题是shell字符串。
我怎么解决这个问题?
它可以帮助找到替代解决方案,我正在尝试做的是使用mv
命令从python移动文件,并且此文件的名称中包含空格。
答案 0 :(得分:2)
os.system('echo ' + 'string with spaces'.replace(' ', '\ '))
在该行中,最后一个字符串'\ '
将尝试转义空格,即使这不是转义序列。如果您希望它成为具有前置退格的空格,您可以转义退格('\\ '
),也可以使用原始字符串来忽略所有转义序列(r'\ '
)。