[英]From Python run WinSCP commands in console
我必須使用子進程從 Python 類運行 WinSCP 的一些命令。
目標是連接本地 Windows 計算機和未安裝 FTP 的 Windows 服務器並下載一些文件。 這是我試過的
python
proc = subprocess.Popen(['WinSCP.exe', '/console', '/WAIT', user:password@ip:folder , '/WAIT','get' ,'*.txt'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
有了這個,我可以打開 WinSCP 控制台並連接到服務器,但它不執行get
命令。 問題是因為get
是在 Windows 控制台上執行的,而不是在 WinSCP 控制台中執行的嗎?
我還嘗試將winscp.exe /console
替換為winscp.com /command
。
有沒有辦法做到這一點?
因此,當使用/script
選項時,您應該指定一個包含批處理命令的文件。
要在執行時指定命令行上的所有命令,請使用/command
選項而不是/script
。
如果你不想生成腳本文件,你可以使用這樣的代碼:
import subprocess
process = subprocess.Popen(
['WinSCP.com', '/ini=nul', '/command',
'open ftp://user:password@example.com', 'get *.txt', 'exit'],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
for line in iter(process.stdout.readline, b''): # replace b'' with '' for Python 2
print(line.decode().rstrip())
代碼使用:
/command
開關來指定命令上的WinSCP命令行;winscp.com
而不是winscp.exe
,因為winscp.com
是一個控制台應用程序,所以它的輸出可以被Python 讀取。盡管使用數組作為參數將不起作用,如果命令參數中有空格(如文件名)。 然后您必須自己格式化完整的命令行。 請參閱subprocess.Popen 中的 Python 雙引號在執行 WinSCP 腳本時不起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.