【问题标题】:Unable to understand this simple python backup program看不懂这个简单的python备份程序
【发布时间】:2014-09-26 06:05:10
【问题描述】:

我是一名新手程序员,我开始阅读 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 ... 是什么,但如果有人可以向我解释这一切,我将非常感激

【问题讨论】:

标签: python


【解决方案1】:

os.sep 是一个独立于平台的文件分隔符字符串。具体来说,在 Windows 上是“\”,而在其他操作系统上是“/”。

os.mkdir 从给定的路径创建一个目录。如果文件或目录已存在,则会引发异常。

time.strftime('%Y%m%d%H%M%S') 将时间 datetime 格式化为字符串,格式为 %Y 替换四位数年份,%m 是整数月份,%d 是月份中的日期,%H 是小时,%M是分钟,%S 是秒。

【讨论】:

  • 为什么要使用os.sep?我理解其余的,除了为什么在 if not 语句中的括号中是 target_dir。
  • 如果您想在 Windows 和任何其他操作系统上运行相同的代码,那么您需要使用 os.sepos.path.join。否则你的程序会崩溃。
  • 好的,但是文件分隔符字符串是什么意思?为什么我们需要分隔文件?抱歉这么笨
  • 您计算机上的文件被分成单独的文件和目录。文件path 表示文件在磁盘上的位置。文件分隔符表示文件存在于另一个目录中。例如,在 Windows 上,根目录可能是“C:”,而该目录中的文件可能是“C:\myfile.txt”。那个反斜杠字符就是我所说的文件分隔符。它从字面上将目录与文件名分开。
  • 好吧,我想我明白这意味着什么,我只是不明白它是如何组合在一起的。我们导入两个模块,因为我们需要使用它们,然后创建包含列表 Users/swa/notes 的变量 source,然后我们创建指向目录 users/swa/backup 的变量 target_dir。那么,写 target = target_dir + os.sep + \time.strftime('%Y%m%d%H%M%S') + '.zip' 的目的是什么?顺便说一句,谢谢你这么耐心。
猜你喜欢
  • 1970-01-01
  • 2013-11-01
  • 1970-01-01
  • 2017-10-13
  • 2014-04-10
  • 2023-03-28
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多