从Python在控制台中运行WinSCP命令

时间:2019-06-04 18:50:20

标签: python console sftp winscp windows-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

有什么办法吗?

2 个答案:

答案 0 :(得分:1)

因此,在使用/script选项时,应指定一个包含批处理命令的文件。

要在执行操作时在命令行上指定所有命令,请使用/command选项而不是/script

答案 1 :(得分:0)

如果您想在不生成脚本文件的情况下执行操作,则可以使用如下代码:

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())

代码使用: