2014-08-04 2 views
3

Я пытаюсь заставить xcopy работать с python для копирования файлов в удаленную систему. Я использую очень простой пример теста:Xcopy with Python

import os 

src = "C:\<Username>\Desktop\test2.txt" 
dst = "C:\Users\<Username>" 

print os.system("xcopy %s %s" % (src, dst)) 

Но по какой-то причине, когда я запускаю это я получаю:

Invalid number of parameters 
4 

Запуск XCOPY непосредственно из командной строки работает нормально. Есть идеи?

Благодаря

+1

Документация Python рекомендуется использовать модуль вместо 'os.system' [' subprocess'] (https://docs.python.org/2/library/subprocess.html). –

ответ

3

\t это символ табуляции. Я предложил бы использовать сырые строки для окон путей:

src = r"C:\<Username>\Desktop\test2.txt" 
dst = r"C:\Users\<Username>" 

Это остановит питон от вас удивительно, интерпретируя некоторые из ваших обратных косых черт, как управляющие последовательностями.

+0

Ничего себе .... Спасибо, теперь чувствую себя довольно немым. Проходит час моей жизни. Ха! – DJMcCarthy12

+2

Или просто используйте косые черты; Windows отлично подойдет им. – kindall

0

Попробуйте префикс вашей строки r. Итак, r"C:\<Username>\Desktop\test2.txt". Проблема в том, что обратная косая черта рассматривается как специальный символ в строках.

3

В дополнение к использованию строковых литералов используйте модуль subprocess вместо os.system - он позаботится о правильном цитировании ваших аргументов, если они содержат пробелы. Таким образом:

import subprocess 

src = r'C:\<Username>\Desktop\test2.txt' 
dst = r'C:\Users\<Username>' 

subprocess.call(['xcopy', src, dst])