вам нужно избежать обратной косой черты.
обратная косая черта - это специальный символ, поэтому вы можете кодировать специальные символы, такие как табуляция (\t
), символы новой строки (\n
) и многое другое.
так что вы можете просто заменить это:
command = 'potreeconverter {} -q NICE -p {} –o {}\{}\{}\{}'.format(path,folder,pathup[0],cid,wpid,folder)
с:
command = 'potreeconverter {} -q NICE -p {} –o {}\\{}\\{}\\{}'.format(path,folder,pathup[0],cid,wpid,folder)
Вы также можете использовать необработанную строковую нотацию Python , которую я лично считаю более приятной и проще в обслуживании:
command = r'potreeconverter {} -q NICE -p {} –o {}\{}\{}\{}'.format(path,folder,pathup[0],cid,wpid,folder)
это просто говорит Python не считать любой символ специальным (кроме строк формата, но такого рода не учитывается).
Теперь, что касается того, что вы сказали о том, что это странный способ прокладывать пути, есть лучший способ - os.path.join
. это принимает любые аргументы и соединяет их как путь. например, это будет делать:
>>> os.path.join('C:\\tuna', 'fish', 'directory')
'C:\\tuna\\fish\\directory'
>>>
здесь есть 3 основных преимущества: он может выбирать между /
или \
в зависимости от системы (\
в Windows \ DOS, /
в Unix / Linux и т. Д.), Он может принимать любое количество аргументов, и это более читабельно. в вашем случае вы можете сделать:
import os.path
base = 'potreeconverter {} -q NICE -p {} –o'
path = os.path.join(pathup[0], cid, wpid, folder)
command = ' '.join((base, path))
ваш код тоже будет работать, но это рекомендуемый способ работы с путями.
Если у вас есть какие либо вопросы, пожалуйста спрашивайте. хорошего дня!