3 ответов:
вы можете всегда использовать:
'C:/mydir'это работает как в linux, так и в windows. Другая возможность-это
'C:\mydir'если у вас есть проблемы с некоторыми именами вы также можете попробовать сырые строковые литералы:
r'C:\mydir'однако лучше всего использовать
os.pathфункции модуля, которые всегда выбирают правильную конфигурацию для вашей ОС:os.path.join(mydir, myfile)
использовать
os.pathмодуль.os.path.join( "C:", "meshes", "as" )или использовать сырые строки
r"C:\meshes\as"
да
\в Python строковые литералы обозначает начало escape-последовательности. На вашем пути у вас есть действительный двухсимвольные последовательности\a, который рухнул в один символ ASCII Bell:>>> '\a' '\x07' >>> len('\a') 1 >>> 'C:\meshes\as' 'C:\meshes\x07s' >>> print('C:\meshes\as') C:\meshessдругие общие escape-последовательности включают в себя
\t(tab),\n(линия питания),\r(возврат каретки):>>> list('C:\test') ['C', ':', '\t', 'e', 's', 't'] >>> list('C:\nest') ['C', ':', '\n', 'e', 's', 't'] >>> list('C:\rest') ['C', ':', '\r', 'e', 's', 't']Как видите, во всех этих примерах обратная косая черта и следующий символ в дословный были сгруппированы вместе, чтобы сформировать один символ в последней строке. Полный список escape-последовательностей Python-это здесь.
есть множество способов справиться с этим:
Python не будет обрабатывать escape-последовательности в строковых литералах с префиксом
rилиR:>>> r'C:\meshes\as' 'C:\meshes\as' >>> print(r'C:\meshes\as') C:\meshes\asPython в Windows должен обрабатывать прямые косые черты, тоже.
вы могли бы использовать
os.path.join...>>> import os >>> os.path.join('C:', os.sep, 'meshes', 'as') 'C:\meshes\as'... или новее
pathlibмодуль>>> from pathlib import Path >>> Path('C:', '/', 'meshes', 'as') WindowsPath('C:/meshes/as')
Comments