远程发送时如何创建不存在的文件夹和子文件夹

问题描述 投票:0回答:1

我需要将从一台服务器下载的图像发送到另一台服务器。但是,我需要将图像保存在包含“年”、“月”的文件夹中。这是一个示例:

ftp = ftplib.FTP('ftp-server','userftp','*********')

file = open('download-torrent-filme.webp','rb')

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

我需要创建这样的文件夹,以防它们不存在。我的想法是将年份和月份存储在变量中并发送。例如:

year = date.today().year

month = date.today().month

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

           

但是如果该文件夹不存在,我需要创建该文件夹。我怎样才能尽可能干净简单地做到这一点?

python python-3.x python-2.7 ftplib
1个回答
1
投票

图书馆的有用功能

ftplib
:

  • 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)

文档:

© www.soinside.com 2019 - 2024. All rights reserved.