初学习python —— 备份文件脚本
练习内容:
* 流程控制:if,for
* 命令参数解析:getopt
流程控制总结
a. 如果只是bool 类型判断,就直接用if expression,或 if not expression
b. xx_var in xx_array 模式,遍历或者查找数组中的成员命令参数解析
getopt
getopt 是Python中c语言格式的命令参数解析模块
# 如下是调用getopt解析命令参数的经典写法
try:
opts, args = getopt.getopt(argv[2:], \
'htvzn:',\ # 短命令参数匹配, n: 表示需要赋值的
["help", 'version', 'time', name=]) # 长命令参数匹配
except getopt.GetoptError as err:
print err
# opts是一个数组,包含了命令和命令参数,如果运行时候带了```-t -z=zzz```, 则会有如下结果
# opts = [('-t', ''), ('-z', 'zzz')]
# 得到opts数组后,就可以通过遍历和判断,来运行需要进行的操作
#! /usr/bin/python
# Filename backup.py
import sys
import getopt
import os
import time
VERSION = 0.1
('\n'
'make a backup of the select file\n'
'heafei@aliyun.com'
'\n')
def usage():
print 'tool_dev help: backup.py file_name'
print '-h, --help: print help message'
print '-v, --version: print script versioni'
print '-t ,--time: makr date, year_month_day'
def backup(file_name, time_mark):
is_file = False
pwd = os.getcwd()
path = pwd + '/' + file_name
print path
if not os.path.exists(path):
print 'file:', file_name, 'does not exist'
return 0
elif os.path.isfile(path):
prefix = 'cp'
else:
prefix = 'cp -R'
if time_mark:
t = time.localtime()
time_str = '_%04d%02d%02d' % \
(t.tm_year, t.tm_mon, t.tm_mday)
else:
time_str = ''
command = '%s %s %s%s.bak' % \
(prefix, file_name, file_name, time_str)
print command
if os.system(command) == 0:
print 'backup file success'
os.system('ls -l %s %s*.bak' % (file_name, file_name))
else:
print 'fail to backup files'
def main(argv):
time_en = False
if len(argv) == 1:
usage()
sys.exit(2)
try:
opts, args = getopt.getopt(argv[2:], 'htvz:', ["help", 'version', 'time'])
print opts
print args
except getopt.GetoptError as err:
print err
usage()
sys.exit(2)
for o, a in opts:
print 'option = %s, argment = %s' % (o, a)
for o, a in opts:
if o in ('-v', '--version'):
print VERSION
elif o in ("-h", "--help"):
usage()
sys.exit()
elif o in ('-t', '--time'):
time_en = True
else:
assert False, 'unhandled option'
backup(argv[1], time_en)
if __name__ == '__main__':
main(sys.argv)