6

双引号看起来像这样 "。如果我把它放在 python 字符串中,我得到这个' " '。在 python 中,我可以在一个字符串中放两个双引号,' "" '这会打印为两个双引号。但是,我不能放一个双引号在一个字符串中,和以前一样,' " '我在 Eclipse 中使用 pydev 执行此操作,它给出了一个error: "encountered "\r" (13), after : ""。我正在尝试使用命令管道和文件名执行以下操作:

logA = 'thing.txt'
cmdpipe = os.popen('copy "C:\upe\' + logA + '"' + ' "C:\upe\log.txt"') 
4

3 回答 3

3

您需要转义反斜杠:

logA = 'thing.txt'
cmdpipe = os.popen('copy "C:\\upe\\' + logA + '"' + ' "C:\\upe\\log.txt"') 

r'...'通常,当字符串文字中有反斜杠时,会使用原始字符串 ( )。但是,正如@BrenBarn 所指出的,这在这种情况下不起作用。

于 2012-11-30T19:26:50.830 回答
2

你需要避开反斜杠,否则它会做奇怪的事情。

logA = 'thing.txt'
cmdpipe = os.popen(
    'copy "C:\\upe\\' + logA + '"' + ' "C:\\upe\\log.txt"')

编辑:一个更pythonic的方式是这样的:

logA = 'thing.txt'
cmdpipe = os.popen('copy "C:\\upe\\{}" "C:\\upe\\log.txt"'.format(logA))
于 2012-11-30T19:30:01.537 回答
0

后面的反斜杠upe转义第一个单引号关闭:

'copy "C:\upe\' + logA + '"' + ' "C:\upe\log.txt"'
--------------^ add an escape at least here, and it will work!

另一种选择是在更多步骤中编写命令:

basepath = r'C:\upe'
inpath = os.path.join(basepath, logA)
outpath = os.path.join(basepath, 'log.txt')
logA = 'thing.txt'
command = 'copy "%s" "%s"' % (inpath, outpath)

print command

cmdpipe = os.popen(command)
于 2012-11-30T19:36:12.430 回答