【发布时间】:2026-02-01 10:05:01
【问题描述】:
您好我已经创建了这个python脚本但是它只运行了一半而不是完全运行,Ftp上传的部分没有执行,我该如何修复这个脚本?
import subprocess
import time
cmdline = ["cmd", "/q", "/k", "echo off"]
cmd = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
batch = b"""\
ping 192.0.2.2 -n 1 -w 1000 > nul
notepad.exe office-data.txt
"""
cmd.stdin.write(batch)
cmd.stdin.flush() # Must include this to ensure data is passed to child process
result = cmd.stdout.read()
print(result)
import ftplib
sftp = ftplib.FTP('ftp.example.com','userexample','passexample') # Connect
fp = open('office-data.txt','rb') # file to send
sftp.storbinary('STOR office-data.txt', fp) # Send the file
fp.close() # Close file and FTP
sftp.quit()
【问题讨论】:
-
我猜 ftp.example.com 和那些登录信息是不合法的,对于初学者来说
-
FTP 部分无关紧要,因为使用简单的
print会出现问题。 -
不要使用
shell=True;您已经在手动运行 cmd.exe。正如 cmd 所期望的那样,以"\r\n"结束每一行,或者使用universal_newlines=True和str输入。使用bufsize=0避免必须flush,并使用result, err = cmd.communicate(batch)避免死锁。
标签: python windows batch-file ftp