初学python —— 备份文件脚本

初学习python —— 备份文件脚本

练习内容:
* 流程控制:if,for
* 命令参数解析:getopt

  1. 流程控制总结
    a. 如果只是bool 类型判断,就直接用if expression,或 if not expression
    b. xx_var in xx_array 模式,遍历或者查找数组中的成员

  2. 命令参数解析 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)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值