我在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()
不返回布尔值,是吗?
感谢。
答案 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,如果不成功则返回其他内容。