Можно ли с помощью python или с любым другим языком архивировать ежедневно загружаемые файлы в одну папку - PullRequest
0 голосов
/ 23 января 2019

Мне нужна утилита для архивирования моих ежедневно загруженных файлов в одну новую папку.

Предположим, я скачал 10 файлов сегодня, и в конце дня все файлы должны быть заархивированы в одну новую папку симя Archived_TodaysDate.

ЭТА ДЕЯТЕЛЬНОСТЬ / ЗАДАЧА МОЖЕТ БЫТЬ ПЛАНИРУЕМАЯ И ИСПОЛЬЗОВАТЬСЯ НА ЕЖЕДНЕВНОЙ ОСНОВЕ.

ЭТО БЫ ХОРОШО, ЕСЛИ ВЫ ПОМОЖЕТЕ В КОНТЕКСТЕ СИСТЕМЫ УПРАВЛЕНИЯ MAC.

Я знаю, что это можно сделать с помощью многих языков сценариев, но я хотел узнать для mac, какой язык сценариев подходит для этой задачи, и краткое руководство.

1 Ответ

0 голосов
/ 23 января 2019

Если вы не знакомы с настройкой chrontab, вы можете настроить их, выполнив this (Я искал для Mac конкретный, но есть миллионы руководств по этому поводу.)

Ваш скрипт архивирования может быть довольно простым. Начните с создания списка файлов для архивирования (см. этот ответ.)

import datetime as dt
import time
import os
import zipfile

now = dt.datetime.now()
ago = now-dt.timedelta(days=1)

В отличие от указанного в ответе, мы хотим получить список файлов, а не вывод print ed. Таким образом, мы инициализируем список и append к нему на каждой итерации. Здесь я предполагаю, что ваш сценарий живет в вашей папке загрузок, но вы можете изменить путь, указанный на os.walk, в зависимости от ситуации.

to_archive = []

for root, dirs,files in os.walk('.'):  
    for fname in files:
        path = os.path.join(root, fname)
        st = os.stat(path)    
        mtime = dt.datetime.fromtimestamp(st.st_mtime)
        if mtime > ago:
            to_archive.append(path)

Мы также хотим strftime представление now для заголовка нашего архивного файла.

ts = now.strftime("%m_%d_%Y")

Наконец, запишите файлы в архивный файл (в данном случае я выбрал формат zip).

with zipfile.ZipFile('{}_archive.zip'.format(ts), 'w') as myzip:
    for x in to_archive:    
      myzip.write(x)
...