2012-11-30 5 views
5

Çift tırnak işareti şöyle görünür". Bunu bir python dizesinin içine koyarsam, bu ' " ''u alırım. Python'da, ' "" ' dizgisine iki çift tırnak koyabiliyorum ve bu iki çift tırnak işareti olarak basılıyor. Ancak, daha önce olduğu gibi ' " ' gibi bir dizeye tek bir çift tırnak işareti koyamıyorum. Bunu pydev ile tutulma aşamasında yapıyorum ve bir error: "encountered "\r" (13), after : "" veriyor. tersbölüler içeride varken bir (r'...') ham dizeleri kullanmak istiyorsunuz, Tipikpython string '"': dize içinde tekli çift tırnak işareti

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

cevap

2

Ters eğik çizgi kaçmak gerekir, aksi takdirde tuhaf şeyler yapar.

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

Düzenleme: Daha pythonic yolu bu olsa olurdu:

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

Harika cevaplar, teşekkürler! – user442920

3

Sen ters eğik çizgi kaçış gerekir: Ben komut boru ve dosya adları ile aşağıdaki işlemleri çalışıyorum bir dize değişmezi. Ancak, @BrenBarn tarafından belirtildiği gibi, bu durumda işe yaramaz.

+0

İşlenmemiş bir dizgede bile, ters eğik çizgi, sonundaki alıntı karakterinden hala kaçtığından, bir ham dizge çalışmayacaktır. Tutarsız ters eğik çizgi ile ham bir diziniz olamaz. – BrenBarn

+0

@BrenBarn: İyi yakalama, teşekkürler. – NPE

0
upe sonra ters eğik çizgi ilk tek tırnak kapanış kaçtığı

:

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

Başka bir seçenek oluşturmak için aşağıdadır Daha fazla adımda komut:

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)