2012-11-30 19 views
5

二重引用符はこのように見えます。これをPythonの文字列の中に入れたら、私はこれを得る' " '。 Pythonでは、文字列' "" 'に2つの二重引用符を入れることができます。これは2つの二重引用符として出力されます。しかし、以前のように、一重引用符を文字列に入れることはできません。' " '私はpydevで日食でこれをやっていて、それはerror: "encountered "\r" (13), after : ""を与える。私は、コマンドパイプやファイル名で次の操作を実行しようとしています:pythonの文字列 '' ':文字列の中の単一の二重引用符

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

編集:より多くの神託の方法は、このかかわらず、次のようになります。別のオプションは、あなたを構成することである

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

upe

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

偉大な答えはすべて、ありがとう! – user442920

3

あなたはバックスラッシュをエスケープする必要があります。

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

通常、内部のバックスラッシュがある場合、1は、生の文字列(r'...')を使用します文字列リテラル。しかし、@ BrenBarnによって指摘されているように、この場合は動作しません。

+0

生の文字列であっても、最後にバックスラッシュが引用文字をエスケープするので、生の文字列はまだ動作しません。奇数の末尾のバックスラッシュを持つ生の文字列を持つことはできません。 – BrenBarn

+0

@BrenBarn:良いキャッチ、ありがとう。 – NPE

0

バックスラッシュは最初の単一引用符の閉鎖を脱出されますより多くのステップでコマンド:

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) 
関連する問題