Я запускаю этот код:
source_path = "c:\temp\\"
dest_path = "c:\\temp2\\"
for Name in UserNames:
run_win_cmd("robocopy "+ source_path + Name + "* "+ dest_path)
Имя в UserNames дает имя типа JBlackstone, и я получаю следующее:
b'ERROR : Invalid Parameter #2 : "emp\\Flastone*"\r\n'
В комплекте с b '. Независимо от того, как я форматирую обратную косую черту для командной строки, это оказывается неправильным. Здесь он читал \temp
как вкладку emp. Если я ставлю двойную обратную косую черту \\temp\\
на \, она ставит двойную обратную косую черту. Если я этого не сделаю, он будет читать их как символы форматирования. Я использую run_win_cmd
для вызова кода.
Предложения будут очень признательны.
@Shihe Zhang Спасибо за ваш ответ. Абсолютно это было частью проблемы. Также я обнаружил следующее (перейдите в самый низ страницы, он длинный), и процесс экранирования обратной косой черты в командах Windows четко объяснен. [1] :( docs.python.org/3.5/library/subprocess.html#subprocess. PIPE)
Вы можете ответить на свой вопрос или (и) отметить его как дубликат.
Я просто переписал его, используя Popen напрямую, что похоже на то, как сейчас большинство людей делают это в python. Я также перенаправляю в файл d stdout и stderr. В процессе этого текст был правильно отформатирован.
см. stackoverflow.com/questions/51520/…