From Python run WinSCP commands in console(从 Python 在控制台中运行 WinSCP 命令)
问题描述
我必须使用子进程从 Python 类运行一些 WinSCP 命令.
I have to run a few commands of WinSCP from a Python class using subprocess.
目标是连接本地 Windows 计算机和未安装 FTP 的 Windows 服务器并下载一些文件.这是我尝试过的
The goal is to connect a local Windows machine and a Windows server with no FTP installed and download some files. This is what I tried
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 控制台中执行的吗?
With this I get it to open the WinSCP console and connect to the server, but it doesn't execute the get
command. Is the problem because the get
is executed on the Windows console and not in the WinSCP console?
我还尝试将 winscp.exe/console
替换为 winscp.com/command
.
I also tried replacing winscp.exe /console
for winscp.com /command
.
有什么办法吗?
推荐答案
如果你不想生成脚本文件,你可以使用这样的代码:
If you want do without generating a script file, you can use a code like this:
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
开关 指定commands 在 WinSCP 命令行上;winscp.com
而不是winscp.exe
,因为winscp.com
是一个控制台应用程序,所以它的输出可以被Python读取.
/command
switch to specify commands on WinSCP command-line;winscp.com
instead ofwinscp.exe
, aswinscp.com
is a console application, so its output can be read by Python.
虽然使用数组作为参数是行不通的,但如果命令参数中有空格(如文件名).然后你必须自己格式化完整的命令行.请参阅Python 双引号在 subprocess.Popen 在执行 WinSCP 脚本时不起作用.
Though using the array for the arguments won't work, if there are spaces in command arguments (like file names). Then you will have to format the complete command-line yourself. See Python double quotes in subprocess.Popen aren't working when executing WinSCP scripting.
这篇关于从 Python 在控制台中运行 WinSCP 命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:从 Python 在控制台中运行 WinSCP 命令
基础教程推荐
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01