2016-09-28 2 views
0

Я использую следующий скрипт python для копирования файлов между машинами Windows.Как использовать регулярное выражение внутри функции?

from subprocess import call 

def copy_logs(): 
    file= '.\pscp.exe -pw test123 C:\Users\Administrator\Desktop\interact.* [email protected]:/' 
    call(file) 

copy_logs() 

Если я бегу выше сценарий, я получаю следующее сообщение об ошибке:

PS C:\Users\Administrator\Desktop> python .\execute_pscp.py 
C:\Users\Administrator\Desktop\interact.*: No such file or directory 

PS C:\Users\Administrator\Desktop> 

Но если я указать имя файла точно так, как «файл =» \ pscp.exe -pw test123 C:. \ Users \ Administrator \ Desktop \ interactive_python.py [email protected]:/'", работающая отлично, как показано ниже.

PS C:\Users\Administrator\Desktop> python .\execute_pscp.py 
interact_python.py  | 0 kB | 0.2 kB/s | ETA: 00:00:00 | 100% 
PS C:\Users\Administrator\Desktop> 

Но я хочу использовать некоторое регулярное выражение внутри команды «взаимодействовать. *». Чтобы я мог копировать некоторые файлы/файлы.

А также я хочу выполнить этот скрипт каждые три часа. его там каким-то образом в питоне, чтобы достичь этого?

+1

Вы просто передаете аргументы 'pscp.exe'. 'pscp.exe' должен поддерживать такой ввод. – zvone

+0

'call (file, shell = True)'. Вы пытаетесь использовать функциональность оболочки (оболочка отвечает за расширение звездочки, а не за запуск приложения), когда оболочка вообще не запускается. –

+0

В оболочке Windows НЕ разворачивается звездочка. –

ответ

0

Я пробовал модуль «import os», как показано ниже. Он отлично работает.

import os 

def copy_logs(): 
    os.system(".\pscp.exe -pw test123 C:\Users\Administrator\Desktop\interact_pyth* [email protected]:/") 

copy_logs() 
+0

Вы пытались использовать 'Subprocess.call'? Уверен, что это тоже работает. –

+0

@ Jean-FrançoisFabre Если я использую «subprocess.call (файл)», то его выдает «подпроцесс NameError: global name» подпроцесс «не определена». – rcubefather

+0

'импорт подпроцесса'. Кроме того, обратные косые черты лучше экранируются (или префикс с исходным префиксом, или вы можете получить некоторые сюрпризы). –