2012-11-30 3 views
5

큰 따옴표는"다음과 같이 보입니다. " 이것을 파이썬 문자열 안에 넣으면 나는 이걸 얻는다 ' " '. 파이썬에서는 두 개의 큰 따옴표를 문자열 ' "" '에 넣을 수 있으며 두 개의 큰 따옴표로 인쇄됩니다. 그러나 이전처럼 문자열에 단일 큰 따옴표를 넣을 수는 없습니다. ' " '. 나는 pydev와 이클립스에서 이것을하고있어 error: "encountered "\r" (13), after : ""를 제공합니다. 백 슬래시가 내부에있을 때 하나 (r'...')를 원시 문자열을 사용, 일반적으로파이썬 문자열 ' "': 문자열 내부의 작은 따옴표

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"') 

답변

2

백 슬래시를 벗어나야합니다. 그렇지 않으면 이상한 일이 발생합니다.

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)) 
+0

위대한 답변 모두 감사합니다! – user442920

3

당신은 백 슬래시를 이스케이프해야합니다 나는 명령 파이프와 파일 이름으로 다음을 수행하는 것을 시도하고있다 문자열 리터럴. 그러나 @BrenBarn이 지적한 것처럼이 경우에는 작동하지 않습니다.

+0

원시 문자열에서도 여전히 백 슬래시가 끝에있는 인용 문자를 이스케이프 처리하므로 여전히 작동하지 않습니다. 홀수 개의 백 슬래시가있는 원시 문자열을 사용할 수 없습니다. – BrenBarn

+0

@BrenBarn : 좋은 캐치, 고마워. – NPE

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)