无法理解这个简单的Python备份程序

-1 投票
1 回答
501 浏览
提问于 2025-04-18 15:50

我是一名新手程序员,最近开始阅读《A Byte of Python》这本书。书中的第一个问题是一个程序,需要解决以下问题:“创建我所有重要文件的备份”。这是这个程序的设计:

需要备份的文件和文件夹在一个列表中指定。

备份必须存储在一个主备份目录中。

文件会被压缩成一个zip文件。

这个zip文件的名字是当前的日期和时间。

这是实现的代码:

    import os

    import time

    source = ['/Users/swa/notes']

    target_dir = '/Users/swa/backup'

    target = target_dir + os.sep + \
             time.strftime('%Y%m%d%H%M%S') + '.zip'

    if not os.path.exists(target_dir):
        os.mkdir(target_dir)

    zip_command = "zip -r {0} {1}".format(target,
                                          ' '.join(source))

    print "Zip command is:"

    print zip_command

    print "Running:"

    if os.system(zip_command) == 0:
        print 'Successful backup to', target
    else:
        print 'Backup FAILED'

我不太明白

    target = target_dir + os.sep + \
             time.strftime('%Y%m%d%H%M%S') + '.zip'
    if not os.path.exists(target_dir):
        os.mkdir(target_dir)
    zip_command = "zip -r {0} {1}".format(target,
                                          ' '.join(source)) 

这部分。我查阅了Python的文档,想了解os.sep、os.mkdir和time.strftime等内容,但如果有人能给我解释一下,我会非常感激。

1 个回答

1

os.sep 是一个与平台无关的文件分隔符字符串。简单来说,在Windows系统上,它是反斜杠'\',而在其他操作系统上,它是正斜杠'/'。

os.mkdir 用来根据给定的路径创建一个新文件夹。如果这个文件夹或者文件已经存在,它会报错。

time.strftime('%Y%m%d%H%M%S') 是把时间格式化成字符串的工具。这里面,%Y代表四位数的年份,%m是月份(用数字表示),%d是这个月的日期,%H是小时,%M是分钟,%S是秒。

撰写回答