如何使用python中的datetime模块动态更新日期



我是python的初学者,我正在尝试创建一个自动备份文件的程序。我正在使用shutil来制作档案,并使用apscheduler来安排备份。我想按日期命名我的备份文件,所以我使用datetime来获取当前的日期和时间。我在StartUp文件夹中有这个脚本,以便它在启动时运行。

这是我的代码:

now = datetime.now()
date = now.strftime("%Y-%m-%d_%H-%M-%S")
backup_dir = r'path/to/backups/folder/' + date + 'docs_backup'
root_dir = r'C:/Users/user/'
base_dir = r'documents'
#This is to make the backup when the computer starts.
shutil.make_archive(
backup_dir,
'zip',
root_dir,
base_dir)
@sched.scheduled_job('interval', hours=1)
def zip_method():
#Make the backup archive every one hour
shutil.make_archive(
backup_dir,
'zip',
root_dir,
base_dir)
print(date)
print("I did a backup!")
sched.start()

这里的问题是,日期变量被声明了一次,所以每小时备份都会有一个过时的名称。有没有什么方法可以在每次创建新归档时为日期变量分配一个新值?

将文件生成名称设置为一个函数,以便您可以随时/以任何方式调用它,如下所示。

ROOT_DIR = r'C:/Users/user/'
BASE_DIR = r'documents'
BACKUP_DIR = r'path/to/backups/folder/'
BACKUP_SUFFIX = 'docs_backup'

def make_backup_path():
now = datetime.now()
date = now.strftime("%Y-%m-%d_%H-%M-%S")
backup_path = BACKUP_DIR + date + BACKUP_SUFFIX
return backup_path

@sched.scheduled_job('interval', hours=1)
def zip_method():
#Make the backup archive every one hour
shutil.make_archive(
make_backup_path(),
'zip',
ROOT_DIR,
BASE_DIR)
print(date)
print("I did a backup!")
#This is to make the backup when the computer starts.
shutil.make_archive(
make_backup_path(),
'zip',
ROOT_DIR,
BASE_DIR)
sched.start()

考虑查找本地和全局范围。如果您将代码中创建日期的部分放在函数中,则每次调用它时,它都会创建一个新的日期。

#This is to make the backup when the computer starts.
shutil.make_archive(
backup_dir,
'zip',
root_dir,
base_dir)
@sched.scheduled_job('interval', hours=1)
def zip_method():
# Establish the key variables
now = datetime.now()
date = now.strftime("%Y-%m-%d_%H-%M-%S")
backup_dir = r'path/to/backups/folder/' + date + 'docs_backup'
root_dir = r'C:/Users/user/'
base_dir = r'documents'

#Make the backup archive every one hour
shutil.make_archive(
backup_dir,
'zip',
root_dir,
base_dir)
print(date)
print("I did a backup!")
sched.start()

最新更新