【发布时间】:2021-09-26 01:56:57
【问题描述】:
我的要求是-
我在“commands.ftp”文件中编写了一组命令,用于将“request.txt”文件上传到 FTP 服务器。 我想从我的python文件中调用命令提示符并一一运行“commands.ftp”文件中的命令。 成功执行所有命令后,我需要 python 文件中的输出。 假设文件是否上传成功或发生任何错误。
我看到很多建议使用子流程的答案。但我没有得到确切的答案来使用它。
command.ftp
ftp
open hostname.com
usename
password
quote site recfm=fb lrecl=750 blocksize=27750 cyl pri=120 sec=60
put "File_Name.txt"
QUIT
以上代码是将文件上传到 Mainframe CMS。 我能够成功上传文件。 但是在上传文件后,我们将收到如何捕获的响应。我无法捕获输出响应。
下面是我为执行 command.ftp 文件而编写的代码。
from subprocess import Popen, PIPE
commands = open('local.ftp', 'r').read()
process = Popen("cmd.exe", shell=False, universal_newlines=True,
stdin=PIPE, stdout=PIPE, stderr=PIPE)
out = process.communicate(commands)
print(out)
这里的 out 变量没有给出输出
【问题讨论】:
-
commands.ftp 中的这些命令是什么?那是什么样的文件?你能发布一个示例 commands.ftp 吗?
-
我现在已经编辑了问题并添加了代码。问题是我能够使用 subprocess 模块将 txt 文件上传到 CMS。但我没有收到上传成功和上传大小这些东西的响应。
-
哪个操作系统?在 linux/mac 上,您可以使用 pexpect 模块。在 Windows 上,它会有所不同。您可能只需将文件通过管道传输到 ftp 命令。
-
我在 WIndows 中尝试。
-
看windows ftp它有一个命令行参数来获取一个命令文件。
subprocess.run("ftp -i -n -s:local.ftp", shell=True)。不确定第一个“ftp”行是否有问题,或者您是否必须修改命令语法。
标签: python cmd subprocess python-cmd