python小例子-文件备份

2020-04-14  本文已影响0人  巴巴11

地址:
https://www.shiyanlou.com/courses/302/learning/?id=940

目标:
将一个文件的内容压缩后放到另外一个文件夹里。

初始代码:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import os
import time

source = ["/home/shiyanlou/Code/"]
target_dir = "/home/shiyanlou/Desktop/"

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")
else :
    print("Backup Failed")

改进1:

#!/usr/bin/env python3
# -*- coding: utf-8 -*- 

import os
import time
#基本变量
source = ["/home/shiyanlou/Code/"]
target_dir = "/home/shiyanlou/Desktop/"

today_dir = target_dir + time.strftime('%Y%m%d')
time_dir = time.strftime("%H%M%S")

touch = today_dir + os.sep + time_dir + '.zip'
command_touch = "zip -qr " + touch +' '+ ' '.join(source)

#逻辑思路判断
if os.path.exists(today_dir)==0:
    os.mkdir(today_dir)
if os.system(command_touch)==0:
    print("Success backup Up")
else:
    print("Failed backup")

引入图形界面:

#!/usr/bin/env python3
#-*- coding:utf-8 -*- 

#导入模块
import tkinter
import os
import time

#定义函数,这里才是精髓所在
def backup():
    global entry_source
    global entry_target
    source = entry_source.get()
    target_dir = entry_target.get()

    today_dir = target_dir + time.strftime('%Y%m%d')
    time_dir = time.strftime("%H%M%S")

    touch = today_dir + os.sep + time_dir + '.zip'
    command_touch = "zip -qr " + touch +' '+ source

    print(command_touch)
    print(source)
    print(target_dir)
    if os.path.exists(today_dir)==0:
        os.mkdir(today_dir)
    if os.system(command_touch)==0:
        print("Success backup Up")
    else:
        print("Failed backup")

#从这里开始呢,则是开始界面的编写及布局
root = tkinter.Tk()
root.title('BackUp')
root.geometry("200x200")
#第一行的两个控件
lbl_source = tkinter.Label(root, text='Source')
lbl_source.grid(row=0, column=0)
entry_source = tkinter.Entry(root)
entry_source.grid(row=0,column=1)
#第二行的两个控件
lbl_target = tkinter.Label(root, text='Target')
lbl_target.grid(row=1, column=0)
entry_target = tkinter.Entry(root)
entry_target.grid(row=1,column=1)
#第三行的一个按钮控件
but_back = tkinter.Button(root,text='BackUp')
but_back.grid(row=3, column=0)
but_back["command"] = backup
#界面的开始
root.mainloop()

模块os

设置文件或者文件夹的权限
$ sudo chmod 777 文件夹1 [文件夹2 ...]

zip命令
-q : 表示zip命令安静工作
-r : 对目录递归操作

time模块:
%Y 四位年份
%m 显示01-12中的一个
%d 表示为%m月的某一天
%H 24小时制
%M 分钟
%S 秒

' '.join(source) : 将列表转为字符串
sou = ['a', 'b', 'c'] s = '%'.join(sou)
a%b%c

tkinter模块,调用Tcl/Tk的接口,跨平台的脚本图形界面接口。性能不好。
安装tk:
sudo apt-get update sudo apt-get install python3-tk

pygame模块

上一篇下一篇

猜你喜欢

热点阅读