地址:
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
- os.sep
Linux/mac '/'
window '' - os.path.exists(path) : 检查指定路径的文件或文件夹是否存在, False == 0 True != 0
- os.system(command) : 运行command命令,成功返回0,否则返回错误号
设置文件或者文件夹的权限
$ sudo chmod 777 文件夹1 [文件夹2 ...]
zip命令
-q : 表示zip命令安静工作
-r : 对目录递归操作
time模块:
%Y 四位年份
%m 显示01-12中的一个
%d 表示为%m月的某一天
%H 24小时制
%M 分钟
%S 秒
' '.join(source) : 将列表转为字符串
s = '%'.join(sou)
a%b%c
tkinter模块,调用Tcl/Tk的接口,跨平台的脚本图形界面接口。性能不好。
安装tk:
sudo apt-get install python3-tk
pygame模块
网友评论