вот пример кода в cmd
(bat
):
set _in=C:\Users\cat\Desktop\3 set _out=C:\Users\cat\Desktop\3 set _arcpath=C:\Program Files\7-Zip for %%i in (%_in%\*.*) do "%_arcpath%\7z" a "%_out%\%%~ni%%~xi-(%date%).7z" "%%i" pause
Нужно переделать этот код под Python 3.
Такой код добавляет все файлы в один архив:
subprocess.call([r'"C:\Program Files\7-Zip\7z.exe" -mx0 a ' + dt+'.7z'])
,
а нужно каждый файл в отдельный архив.
Анонимный пользователь Изменен статус публикации
Почти буквальный перевод исходного bat-скрипта:
import os import subprocess from datetime import datetime as dt _in = r'C:\Users\cat\Desktop\3' _out = r'C:\Users\cat\Desktop\3' archiver = r'C:\Program Files\7-Zip\7z.exe' for filename in os.listdir(_in): # Если исходная директория совпадает с выходной, и бэкап уже делался, лучше пропускать файлы архивов: if not filename.endswith('.7z'): timestr = dt.now().strftime('%d_%m_%Y_%H_%M_%S') subprocess.call(r'"{ar}" a "{pth}\{fn}_{dt}.7z" "{fn}"'.format(ar=archiver, pth=_out, fn=filename, dt=timestr)) input('Press Enter to continue...') # вместо pause
Получилось немного топорно, но работать по идее должно.