python-3.x 如何创建文件夹并将其复制到远程FTP服务器(如果它们不存在)

hgqdbh6s  于 2023-10-21  发布在  Python
关注(0)|答案(1)|浏览(125)

我需要将从一个服务器下载的图像发送到另一个服务器。此外,我想保存图像在文件夹中组织的日期与“年”和“月”。下面是一个示例:

ftp = ftplib.FTP('ftp-server','userftp','*********')
    
file = open('download-torrent-filme.webp','rb')
    
ftp.storbinary('STOR year/month/download-torrent-filme.webp', file)

我需要创建这样的文件夹,以防它们在FTP服务器上不存在。我的想法是将年和月存储在变量中并发送它。举例来说:

year = date.today().year
    
month = date.today().month
    
ftp.storbinary('STOR '+year+'/'+month+'/download-torrent-filme.webp', file)

但我需要创建的文件夹,如果它不存在。我怎样才能做到尽可能的干净和简单呢?

zfycwa2u

zfycwa2u1#

要解决您的任务,您可以使用ftplib库的以下2个函数:

  • nlst():返回FTP服务器上所有文件和目录的列表
  • mkd():在FTP服务器的文件系统上创建一个文件夹。

试试下面的代码:

import ftplib
from datetime import date

str_year = str(date.today().year)
str_month = str(date.today().month)

# here I use exactly your example instruction
ftp = ftplib.FTP('ftp-server','userftp','*********')
if str_year not in ftp.nlst():
    # year directory creation
    print(f"[1] - {str_year} directory creation")
    ftp.mkd(str_year)
    # year/month directory creation
    print(f"[1] - {str_year}/{str_month} directory creation")
    ftp.mkd(str_year + "/" + str_month)
else:
    if str_year + '/' + str_month not in ftp.nlst(str_year):
        print(f"[2] - {str_year}/{str_month} directory creation")
        # year/month directory creation
        ftp.mkd(str_year + "/" + str_month)

文档

相关问题