2012-11-30 46 views
5

Trích dẫn kép giống như sau". Nếu tôi đặt nó bên trong một chuỗi python, tôi sẽ nhận được số ' " '. Trong python, tôi có thể đặt hai dấu ngoặc kép trong một chuỗi ' "" ' và điều này được in dưới dạng hai dấu ngoặc kép. Tuy nhiên, tôi không thể đặt một dấu nháy đơn trong một chuỗi, như trước, ' " '. Tôi đang làm điều này trong nhật thực với pydev và nó cho một error: "encountered "\r" (13), after : "". Tôi cố gắng để làm như sau với tên ống lệnh và file:chuỗi python '"': dấu ngoặc kép đơn bên trong chuỗi

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

Trả lời

2

Bạn cần phải thoát khỏi các dấu gạch chéo ngược, nếu không nó sẽ làm những điều kỳ quặc.

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

Edit: Một cách pythonic hơn sẽ là mặc dù điều này:

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

Câu trả lời tuyệt vời tất cả, cảm ơn! – user442920

3

Bạn cần phải thoát khỏi dấu xồ nguợc:

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

Thông thường, người ta sẽ sử dụng chuỗi thô (r'...') khi có dấu xồ nguợc bên trong một chuỗi chữ. Tuy nhiên, như được chỉ ra bởi @BrenBarn, điều này sẽ không hoạt động trong trường hợp này.

+0

Chuỗi thô vẫn không hoạt động, vì ngay cả trong chuỗi thô, dấu gạch chéo ngược vẫn thoát khỏi ký tự trích dẫn ở cuối. Bạn không thể có một chuỗi thô với một số lẻ dấu gạch chéo ngược sau. – BrenBarn

+0

@BrenBarn: Tốt, cảm ơn. – NPE

0

Các dấu chéo ngược sau upe được thoát đĩa đơn đầu tiên trích dẫn bế mạc:

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

lựa chọn khác là để soạn của bạn lệnh theo các bước khác:

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) 
Các vấn đề liên quan