gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:46:09 25 4
gpt4 key购买 nike

我必须使用子进程从 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

有什么办法可以做到这一点吗?

最佳答案

如果您不想生成脚本文件,可以使用如下代码:

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

代码使用:

<小时/>

如果命令参数(如文件名)中有空格,则使用数组作为参数将不起作用。然后你必须自己格式化完整的命令行。请参阅Python double quotes in subprocess.Popen aren't working when executing WinSCP scripting .

关于python - 从 Python 在控制台中运行 WinSCP 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56449699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com