python Ftp以目录结构上传文件/年/月/日

2024-10-04 15:25:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我每周使用以下功能上传文件和结构

我在这里要调整的是将目录结构改为每年/每月/每天

示例/Incoming/2016/02/08/filename

如果目录或子目录不存在,它将创建它然后上传

应使用哪种方法从“周日”切换到“年/月/日”的“深目录”结构

def dir_today ():
    """ Function to determine directory today """
    week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
    day = week[datetime.today().weekday()]
    return day

def ftp_upload (ifn):
        """" FTP upload Function. Destination file will be appended with date and timecode received from meta data"""
        src = "%s/%s" % (src_loc,ifn)
        try:
                create_time = get_meta(ifn)
        except:
                create_time = datetime.now().strftime("VID_%Y-%m-%d_T_%H-%M-%S")
        dst_file = os.path.splitext(ifn)[0] + os.path.splitext(ifn)[1]
        upload_directory = ftp_base_directory + '/' + dir_today() + '/'

        try:
                ftp_connect = ftplib.FTP(ftp_server, ftp_login, ftp_password)

                try:
                        ftp_connect.cwd(upload_directory)
                except ftplib.all_errors:
                        ftp_connect.mkd(upload_directory)
                        ftp_connect.cwd(upload_directory)

                file = open(src, "rb")
                send = ftp_connect.storbinary("STOR "+ dst_file, file)
                ftp_connect.close
                file.close()
                os.remove(src)

                logger.info("Moved file %s" %(src))

                oflist.remove(ifn)
                hsize.pop(ifn)
                uploaded.insert(0,ifn)
                try:
                        uploaded.pop(9)
                except:
                        pass
        except Exception as e:
                logger.info("Error: %s" %(repr(e)))

        return

Tags: src目录todayosdefconnectdirftp
2条回答

您可以修改dir_today()以返回子路径:

def dir_today():
    today = date.today()
    return '{day.year}/{day.month}/{day.day}'.format(day=today)

或者:

>>> def dir_today():
...  return datetime.datetime.today().strftime("%Y/%m/%d")
... 
>>> dir_today()
'2016/02/08'

相关问题 更多 >

    热门问题