2012-11-30 7 views
5

Podwójna oferta wygląda tak". Jeśli umieściłem to wewnątrz łańcucha python otrzymuję to ' " '. W pythonie mogę umieścić dwa cudzysłowy w ciągu ' "" ', a to zostanie wydrukowane jako dwa podwójne cytaty. Jednak nie mogę umieścić pojedynczego podwójnego cudzysłowu w ciągu znaków, tak jak wcześniej, ' " '. Robię to w czasie zaćmienia z pydev i daje to error: "encountered "\r" (13), after : "". Próbuję wykonać następujące czynności z nazwami rurowych poleceń i plików:Python ciąg "" ": pojedynczy podwójny cudzysłów wewnątrz ciąg

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

Odpowiedz

2

Musisz uciec od ukośników, w przeciwnym razie zrobi dziwne rzeczy.

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

Edit: Bardziej pythonic sposobem byłoby to jednak:

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

Świetne odpowiedzi, dzięki! – user442920

3

Musisz uciec backslashy:

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

Zazwyczaj można by wykorzystywać surowe ciągi (r'...') gdy istnieją backslashe wewnątrz ciąg literału. Jednakże, jak wskazał @BrenBarn, to nie zadziała w tym przypadku.

+0

Ciąg ciągły nadal nie będzie działał, ponieważ nawet w surowym łańcuchu ukośnik odwrotny nadal ucieka z tytułu cudzysłowu na końcu. Nie możesz mieć nieprzetworzonego łańcucha z nieparzystą liczbą tylnych ukośników. – BrenBarn

+0

@BrenBarn: Dobry połów, dzięki. – NPE

0

Odwrotny ukośnik po upe ucieka pierwszy singiel zamykanie Cytat:

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

Inną opcją jest skomponować polecenie w większej liczbie kroków:

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) 
Powiązane problemy