python string '"': одиночная двойная кавычка внутри строки

Двойная цитата выглядит так: «Если я поместил это внутри строки python, я получу это ' " ' . В python я могу поместить две двойные кавычки в строку ' "" ' и это печатается как две двойные кавычки. Тем не менее, я не могу поместить одну двойную кавычку в строке, как и раньше, ' " ' . Я делаю это в eclipse с pydev, и это дает error: "encountered "\r" (13), after : "" . Я пытаюсь сделать следующее с именами команд и файлов:

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

Вам нужно избегать обратной косой черты, иначе это будет делать странные вещи.

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

Редактировать: более путинский путь будет таким:

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

Вам нужно избегать обратной косой черты:

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

Как правило, можно использовать необработанные строки ( r'...' ), когда в строковом литерале есть обратные косые черты. Однако, как отметил @BrenBarn, в этом случае это не сработает.

Обратная косая черта после 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)