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

标签 python pdf ftp download

我可以使用 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()

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

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

可能只是

def func(content):
    f.write()

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

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

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

相关文章:

iphone - 使用 CGPDF 在 PDF 中查找超链接

php - 自动打开 PDF 文件的打印机对话框

delphi - 从远程 FTP 下载文件列表

.net - 解析来自 FTP LIST 命令的响应(语法变体)

python - 使用numpy.any匹配opencv中的颜色会产生奇怪的结果

python - 如何通过facebook-sdk python api获取用户帖子?

php - dompdf制作页眉和页脚 "solid"

python - 在没有互联网连接的情况下运行 sudo apt-get install

python - OR 函数的感知器不收敛

python - 从 Pandas 数据框中删除值只出现一次的行