Os.system () - Изменение команды zip, чтобы дать другое имя файла для разных дат - PullRequest
1 голос
/ 03 марта 2020

Я пытаюсь заархивировать каталог с отметкой даты и времени, добавленной в созданную папку zip. Как бы я go об этом? Я пробовал что-то вроде этого:

import datetime   
import os
backup_zip = True
    if backup_zip:
        dt = ('{:%Y%m%d_%H%M}'.format(datetime.datetime.now()))
        name = dt + "folder.zip"
        os.system("zip -r" + name +  "/home/olb/CPL")

Это работает, но без отметки даты и времени:

# os.system("zip -r folder.zip /home/olb/CPL")

Большое спасибо за любую помощь

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Вы должны правильно отформатировать командную строку следующим образом:

import datetime
import os

backup_zip = True
if backup_zip:
    dt = '{:%Y%m%d_%H%M}'.format(datetime.datetime.now())
    name = dt + "folder.zip"
    os.system("zip -r " + name +  " /home/olb/CPL")
1 голос
/ 03 марта 2020

Вы должны убедиться, что вокруг имени есть пробелы.

В текущей реализации аргумент, предоставляемый os.system(), равен:

zip -r<name>/home/olb/CPL

Когда вместо него должно быть :

zip -r <name> /home/olb/CPL

Самое простое исправление - добавить пробел перед предыдущей цитатой и пробел после следующей цитаты:

os.system("zip -r " + name +  " /home/olb/CPL")

Если вы используете Python 3.6 +, вы можете использовать отформатированные строковые литералы :

name = f"{dt}folder.zip"
command = f"zip -r {name} /home/olb/CPL"

С этим проще справиться, чем с кавычками и конкатенацией, используя +.

...