在python中编写备份程序

时间:2011-12-28 04:51:04

标签: python

我在Python的A Byte中找到了这个教程,但是不明白它:

import os
import time

source = [r'C:\Users\Desktop\Stuff']

target_dir = 'C:\Users\Backup'

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

zip_command = 'zip -qr "%s" %s' % (target, ' '.join(source))

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

检查help(os)后,我不明白为什么os.system(zip_command)会为零。 .system()不返回布尔值,是吗?

感谢。

3 个答案:

答案 0 :(得分:3)

help(os.system)说:

system(...)
    system(command) -> exit_status

    Execute the command (a string) in a subshell.

因此,它执行您作为参数传递的command并返回该命令的exit_status

当程序返回0作为结果时,表示它已成功执行,如果它返回任何其他内容,则可能表示某处出现错误。

所以在这一行:

if os.system(zip_command) == 0:

你实际上是在询问:如果命令行成功执行,那么......其他......

答案 1 :(得分:0)

在Windows上,返回值是系统shell在运行命令后返回的值,由Windows环境变量COMSPEC给出:在command.com系统上(Windows 95,98和ME),它始终为0;在cmd.exe系统(Windows NT,2000和XP)上,这是命令运行的退出状态;在使用非本机shell的系统上,请参阅shell文档。 见this

答案 2 :(得分:0)

os.system(命令)在子shell中运行命令,并返回一个int。

取自python docs:

“在Windows上,返回值是系统shell在运行命令后返回的值,由Windows环境变量COMSPEC给出:在command.com系统上(Windows 95,98和ME),它始终为0;在cmd.exe系统(Windows NT,2000和XP)上,这是命令运行的退出状态;在使用非本机shell的系统上,请参阅shell文档。“

如果命令成功则返回0,如果不成功则返回其他内容。

来源:http://docs.python.org/library/os.html#os.system