python string'“':字符串中的单引号

时间:2012-11-30 19:25:32

标签: python command-line

双引号看起来像这样“。如果我把它放在一个python字符串中,我得到这个' " '。在python中,我可以在字符串' "" '中放两个双引号,并将其打印为两个双引号。但是,我不能像以前一样在字符串中放一个双引号,' " '。我在eclipse中用pydev做这个,它给了error: "encountered "\r" (13), after : ""。我正在尝试做跟随命令管道和文件名:

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

3 个答案:

答案 0 :(得分:3)

你需要逃避反斜杠:

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

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

答案 1 :(得分: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))

答案 2 :(得分: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)