2012-11-30 17 views
5

एक दोहरे उद्धरण इस तरह दिखता है अंदर सिंगल, डबल उद्धरण"। अगर मैं इसे एक अजगर स्ट्रिंग के अंदर रखता हूं तो मुझे यह ' " ' मिलता है। अजगर में, मैं एक स्ट्रिंग ' "" ' में दो दोहरे उद्धरण चिह्नों डाल सकते हैं और यह दो दोहरे उद्धरण चिह्नों के रूप में मुद्रित किया जाता है। हालांकि, मैं एक भी दोहरे उद्धरण एक स्ट्रिंग में पहले की तरह, ' " ' डाल सकते हैं,। मैं Pydev साथ ग्रहण में यह कर रहा हूं और यह एक error: "encountered "\r" (13), after : "" देता है।अजगर स्ट्रिंग ' "': स्ट्रिंग

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

संपादित करें: एक और अधिक pythonic तरीका यह हालांकि होगा:

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

महान जवाब सभी, धन्यवाद! – user442920

3

आप बैकस्लैश से बचने के लिए की जरूरत है: एक कच्चे तार का प्रयोग करेंगे (r'...')

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

आमतौर पर, जब वहाँ बैकस्लैश के अंदर हैं मैं आदेश पाइप और फ़ाइल नाम के साथ निम्न कार्य करने की कोशिश कर रहा हूँ एक स्ट्रिंग शाब्दिक। हालांकि, जैसा कि @ ब्रेनबर्न द्वारा इंगित किया गया है, यह इस मामले में काम नहीं करेगा।

+0

एक कच्ची स्ट्रिंग अभी भी काम नहीं करेगी, क्योंकि कच्चे स्ट्रिंग में भी बैकस्लैश अंत में उद्धरण चरित्र से बच निकलता है। पीछे की बैकस्लाश की एक विषम संख्या के साथ आपके पास कच्ची स्ट्रिंग नहीं हो सकती है। – BrenBarn

+0

@ ब्रेनबर्न: अच्छा पकड़, धन्यवाद। – 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) 
संबंधित मुद्दे