代码登录到远程目录,搜索文件并通过FTP在Python中下载
我有一个扩展名为(xxxxxxxxxxxxx_PARSERxxxxx.tar.gz)的.gz包,放在远程目录中,比如说1.1.1.1(应该是一个变量输入),我目前正在从机器上运行脚本,比如说2.2.2.2,我需要将包放在机器3.3.3.3(应该是一个变量输入),准备了一个相同的脚本,但它不工作,请帮助我在相同的 以下是到目前为止我编写的代码(不起作用):代码登录到远程目录,搜索文件并通过FTP在Python中下载,python,ftp,operating-system,ftplib,telnetlib,Python,Ftp,Operating System,Ftplib,Telnetlib,我有一个扩展名为(xxxxxxxxxxxxx_PARSERxxxxx.tar.gz)的.gz包,放在远程目录中,比如说1.1.1.1(应该是一个变量输入),我目前正在从机器上运行脚本,比如说2.2.2.2,我需要将包放在机器3.3.3.3(应该是一个变量输入),准备了一个相同的脚本,但它不工作,请帮助我在相同的 以下是到目前为止我编写的代码(不起作用): 如果你告诉我们这个程序是如何运作的,那会很有帮助 快速浏览一下,我会说perserfile bit和filenm的用法是错误的 os.syst
如果你告诉我们这个程序是如何运作的,那会很有帮助 快速浏览一下,我会说perserfile bit和filenm的用法是错误的
os.system
返回一个整数,因此filenm
不是文件名,而是find命令的存在状态。您希望使用pipe=subprocess.Popen(['find'、'.'、'-name'、'*PARSER*.gz']、stdout=subprocess.pipe
和for循环pipe.stdout
来读取命令生成的所有行ftp.retrbinary
行看起来可疑:您可能希望删除'filenm'
周围的引号,以使用上面找到的路径,并使用需要修复的回调函数(见下文)handleDownload
中,对file.write
的调用将失败,因为您调用的是文件类而不是文件对象local_fobj = file('downloaded_file.gz', 'wb')
def download_cb(data):
local_fobj.write(data)
ftp.retrbinary('RETR %s' % filenm, download_cb)
local_fobj.close()
其他杂项材料:
cwd=os.getwd()
后跟os.chdir(cwd)
可以安全删除rmtip
未定义,应由rmthstip
local_fobj = file('downloaded_file.gz', 'wb')
def download_cb(data):
local_fobj.write(data)
ftp.retrbinary('RETR %s' % filenm, download_cb)
local_fobj.close()