gpt4 book ai didi

python - 使用 Python 脚本从 FTP 下载 .pdf 文件

转载 作者:太空宇宙 更新时间:2023-11-04 11:02:06 24 4
gpt4 key购买 nike

我可以使用 Python 中的 ftplib 从 FTP 下载文件,但这就像我硬编码文件名(R.pdf)并且仅下载(R.pdf),是否有使用 Python 将 FTP 中所有扩展名为 .PDF 的文件下载到我的本地系统的方法。我只需使用 *.pdf 就可以在 Shell 中执行此操作

最佳答案

用您的凭据替换主机、用户和密码,和 'public_html/soleil' 以及您要下载的 PDF 文件所在目录的地址,在下面的代码中,我认为应该没问题。

from ftplib import *
from os import listdir
from os.path import getsize


ftp_dt = FTP(host,user,password)
ftp_pi = FTP(host,user,password)
print '\n- Ouverture de connection et logging : OK'


ftp_dt.cwd('public_html/soleil')
ftp_pi.cwd('public_html/soleil')


def func(content, li = [0], la = [], si = [0], memname = ['']):
if name!=memname[0]:
memname[0],li[0:1],la[:],si[0:1] = name,[0],[],[0]
li[0] = li[0] + 1
si[0] = si[0] + len(content)
la.append(str(len(content)))
if li[0]%8==0:
print ' '.join(la) +\
' total: '+str(li[0])+' chunks, '+str(si[0])+' bytes'
la[:] = []
f.write(content)


li_files = []
for name in ftp_dt.nlst():
try:
ftp_dt.size(name)
if name not in ('.','..') and name[-4:]=='.pdf':
li_files.append(name)
except:
pass


if li_files:
for name in li_files:
print '\n- Downloading '+name

with open('E:\\PDF\\DOWNS\\'+name,'wb') as f:
ftp_pi.retrbinary('RETR '+name,func)

if getsize('E:\\PDF\\DOWNS\\'+name)==ftp_dt.size(name):
print ' OK ! Download of complete '+repr(name)+' SUCCEEDED'
else:
print ' FAILURE !! : '+name+' only partially downloaded'
else:
print '\nThere is no PDF file in this FTP directory'


ftp_dt.quit()
ftp_pi.quit()

两个连接 ftp_dtftp_pi 为“数据传输”和“协议(protocol)解释”定义,因为 FTP 协议(protocol)基于两个 channel ,一个用于命令,另一个对于......你猜怎么着?

func() 函数在函数 retrbinary() 中用作回调

可能只是

def func(content):
f.write()

但我尝试了一下函数默认变量的可能性。

有一件事我不太明白:当func() 中的引用f 仅在定义后的代码文本中定义时,这段代码如何工作func() 的。但我测试了它并且它有效!

关于python - 使用 Python 脚本从 FTP 下载 .pdf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4507862/

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