python - загрузка файла Ftp в структуре каталогов за/год/месяц/день

111
7

Я использую следующую функцию для загрузки файлов и структуры в неделю,

что я хочу изменить здесь, чтобы изменить структуру каталогов на год/месяц/день

example/Incoming/2016/02/08/filename

если dir или sub dir не выйдет, он создаст его, затем загрузит

какой метод следует использовать для переключения с одного дня на глубину в год/месяц/день

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

спросил(а) 2021-01-19T17:11:59+03:00 9 месяцев назад
1
Решение
64

Вы можете просто изменить dir_today() чтобы вернуть подпуть:

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

ответил(а) 2021-01-19T17:11:59+03:00 9 месяцев назад
66

Или, альтернативно:


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

ответил(а) 2021-01-19T17:11:59+03:00 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема