ошибка строки питона - PullRequest
       11

ошибка строки питона

0 голосов
/ 30 июня 2011
dir = "C:\Users\Geraldes\Desktop\media\teste\ASMS_TapeA01A1691329.mxf"

print dir

используя код выше, я получаю это ... я знаю, что \ t это вкладка

C:\Users\Geraldes\Desktop\media  (espacamento)  este\ASMS_TapeA01A1691329.mxf

, но чтобы это исправить, я делаю:

dir1 = dir.replace("\\", "\\\\")

print "dir:",dir1

и я получаю

C:\\Users\\Geraldes\\Desktop\\media (espacamento)  este\\ASMS_TapeA01A1691329.mxf

как я могу решить эту проблему?

Ответы [ 5 ]

5 голосов
/ 30 июня 2011

экранируйте обратную косую черту вашей исходной строки или используйте необработанные строки.

То есть

dir = "C:\\Users\\Geraldes\\Desktop\\media\\teste\\ASMS_TapeA01A1691329.mxf"

или

dir = r"C:\Users\Geraldes\Desktop\media\teste\ASMS_TapeA01A1691329.mxf"

НО: будьте осторожны со вторым выбором, потому что необработанные строки не были изобретены для путей окон - они были помещены туда для регулярных выражений. Таким образом, однажды вы обнаружите, что хотите поставить обратную косую черту в конце строки, например:

dir = "C:\Users\Geraldes\Desktop\media\teste\"

Это не сработает. Это обсуждается более подробно здесь .

4 голосов
/ 30 июня 2011

Никто не сказал, но, кроме расширенных зазоров и необработанных строк, вы также можете использовать прямые косые черты

>>> dir = "C:/Users/Geraldes/Desktop/media/teste/ASMS_TapeA01A1691329.mxf"
>>> dir
'C:/Users/Geraldes/Desktop/media/teste/ASMS_TapeA01A1691329.mxf'
>>> 

Фактически, прямые косые черты принимаются Windows ( Проверьте это для получения дополнительной информации)

Microsoft Windows [Versión 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.

C:\>cd Users/joaquin

C:\Users\joaquin>

В любом случае самый безопасный способ - использовать os.path.join для построения ваших путей без учета ОС.

>>> import os
>>> os.path.join('C:\Users', 'Geraldes', 'Desktop', 'media', 'teste', 'ASMS.mxf')
'C:\\Users\\Geraldes\\Desktop\\media\\teste\\ASMS.mxf'
>>> 
3 голосов
/ 30 июня 2011

Вы можете использовать необработанное форматирование:

dir = r"C:\Users\Geraldes\Desktop\media\teste\ASMS_TapeA01A1691329.mxf"

Это будет печатать как:

>>> print(dir)
C:\Users\Geraldes\Desktop\media\teste\ASMS_TapeA01A1691329.mxf
3 голосов
/ 30 июня 2011

Определите «необработанную» строку:

dir = r"C:\Users\Geraldes\Desktop\media\teste\ASMS_TapeA01A1691329.mxf"
0 голосов
/ 30 июня 2011

Менее очевидный и менее эффективный способ заключается в следующем:

import os
os.chdir()#change to each directory separately
print os.getcwd()
...