用Python编写备份程序
我在《A Byte of Python》里找到了这个教程,但我不太明白:
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
在Windows系统中,命令执行后的返回值是由系统的命令行界面返回的,这个值由Windows环境变量COMSPEC决定。在使用command.com的系统(比如Windows 95、98和ME)中,这个返回值总是0;而在使用cmd.exe的系统(比如Windows NT、2000和XP)中,这个返回值是运行命令后的退出状态。如果你使用的是其他类型的命令行界面,可以查看相关的文档了解更多信息。
0
os.system(command) 这个函数会在一个子shell中运行你给的命令,并返回一个整数。
根据Python的官方文档:
"在Windows系统中,返回值是系统shell在执行命令后返回的值,这个值由Windows的环境变量COMSPEC决定:在使用command.com的系统(比如Windows 95、98和ME)中,这个值总是0;而在使用cmd.exe的系统(比如Windows NT、2000和XP)中,这个值是执行命令后的退出状态;如果你使用的是其他类型的shell,可以查看相关的shell文档。"
所以,如果命令执行成功,它会返回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:
你实际上是在问:如果命令行成功执行了,那么... 否则...