Python使用tarfile打包压缩文件(笔记)

Python标准库中提供了tarfile模块来支持文件的归档,归档时可选用gzip或bzip2两种压缩方式对归档文件进行压缩。

文件夹归档压缩

下述代码中make_tar函数可实现目录的归档压缩。make_tar()函数来自Python Cookbook (第二版) 2.11节-将文件树归档到一个压缩的tar文件。(添加了注释)

[python]#coding=utf-8

import os,tarfile

def make_tar(folder_to_tar,dst_folder,compression=’bz2′):
”’将folder_to_tar文件夹[……]

>> 阅读全文…

Python使用os.walk或os.path.walk遍历文件树

Python OS模块中提供了os.walk()os.path.walk()两种方法都可以遍历文件树。前者可以列出文件树中的文件和文件夹,后者可以对每个遍历的文件和文件夹调用visit访问函数。

os.walk(top,topdown=True,onerror=None)

  • top:要遍历的文件夹
  • topdown:是否自顶而下遍历。默认为True, 表示先遍历父目录,再遍历子目录。如果为False表示先遍历子目录再遍历父目录。
  • onerror:默认为None表示遍历出错时,忽略错误。否则给出一个错误处理函数。
  • 函数返回遍历的目录、文件夹列表、文件列表,可以使用for循环遍[……]

    >> 阅读全文…

(译)Python zipfile模块介绍

zip是一种常见的压缩格式,Python中提供了zipfile模块来支持zip格式压缩文件的操作,包括文件压缩、解压缩、查看压缩文件信息等,还支持加密文件的解密(不过解密速度慢,因为是使用Python完成,而非C语言),zipfile目前不支持文件的加密。通过设置zipfile.ZipFile()函数的allowZip64参数为True,可以支持大小超过4G的zip文件的操作。

zipfile模块包含的内容主要如下:

  • exception zipfile.BadZipfile:当zip文件破损时抛出的异常
  • exception zipfile.LargeZipfile:当文件过大[……]

    >> 阅读全文…

一晃而过的荒凉感

中午那会,走在街上,一个人挎着包,去往一个车站,路上川流不息的车辆,路边是气势宏伟的汽车城和高层水泥混磷土堆砌的建筑,还有行色匆匆大包小包的赶路人,这副场景让我突然间冒出了一种不合宜的荒凉陌生感,即便只是短暂的一会,象是电影里的慢镜头,镜头中是一个我,站在那里,周围是恍惚的人和物忽闪而过。买完票后,匆匆坐车往回,下车后走在熟悉的道路上,虽然还是一个人,但周围的一切让我感到很温暖。

可能是我太久没有一个人出个远门走走了吧,以至于都不太能适应了。[……]

>> 阅读全文…

百度总算找到我的草房子了

今天上网习惯性的打开百度搜索了一下zhujiangtao.com,意外的发现,我的网站竟然已经被百度的爬虫爬到了,总算能搜索到了。不枉我费了那么多精力啊!

baidushoul.jpgbaidu.jpg

baidujarvischu.jpg

话说自动上月20号下午建站当晚我就发了一篇博文,第二天开始我就测试了各个搜索引擎的收录情况。结果如下google最快,用了不到22小时就收录了我的网站,其它的搜索引擎均没有。23号上午10时,我又再次测试了一下,并截了图。

  • google收录,并显示了我21号的一篇文章,当时这是第二新的一篇文章,最新的是22号晚上10点多的。可见google爬虫更新的速度还是相当可以的。
  • baidu没有收录
  • 360搜索收[……]

    >> 阅读全文…

Python generator和yield 的使用

Python中的generator和yield关键字用来实现类似iterator迭代器的功能。

使用了yield关键字的函数会被视为一个generator,一个generator就类似于iterator,是可以迭代的对象。

generator执行到yield语句时会返回yield语句返回的值,然后保存的当前状态(包括函数中各种变量的当前值),等到下一次调用generator的next()时,从yield后面的语句继续执行。

一个简单示例

[python]def foo():
yield 1
yield 2
yield 3

a = foo()[……]

>> 阅读全文…

Python file()和open()比较

file() 和 open() 都是Python的内建函数(build-in function),都可以用来打开文件。

区别:推荐使用open()打开文件,使用file做类型测试(isinstance(f,file) )。

Python 3.x版本中已经不支持使用file()打开文件

file()函数

file(name[, mode[, buffering]])

file 类型对象的构造函数(file类型具体见File Objects)。该构造函数与open() 函数的参数相同。当打开一个文件时,推荐使用open()函数,而不是直接调用file()构造函数。file更适合用[……]

>> 阅读全文…

Python Unicode

Python源代码的编码

当在源码中使用了任何中文字符,包括变量中或注释中存在的中文字符,需要指定源码的字符集,如果不指定默认为ascii编码。如:

[python]var = ‘abc’ #这是注释
print var[/python]

执行时会报错

SyntaxError: Non-ASCII character ‘\xd5’ in file test.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

这是因为源码中存在中文字符[……]

>> 阅读全文…

Windows文本文件编码(ANSI和Unicode)

Unicode 和 字节序

Unicode有UCS-2和UCS-4两种,分别使用2个字节、4个字节编码一个字符。通常说的Unicode都是指UCS-2。由于一个字符有多个字节,所以Unicode在传输和存储时就存在高位字节和低位字节的顺序问题,即字节序问题,由此分为小端模式(little endian)和大端模式(big endian)。

小端模式:低字节在前,高字节在后。如”汉“ 存储为 49 6C  ("汉"字的Unicode编码是6C49,UTF-16存储格式)

大端模式:高字节在前,低字节在后。”如“汉” 存储为6C 49

"汉"字的Unicod[……]

>> 阅读全文…

PythonChallenge系列-P11 图像分割

Odd Even

PythonChallenge系列第十一题P11(http://www.pythonchallenge.com/pc/return/5808.html,如需登陆:用户名huge,密码file

页面标题为odd even,再看图片,朦朦胧胧,像是有叠影。所以本题应该就是对这个图片的奇、偶像素做不同处理,从图片中分割出另一个藏着答案的图片。好了,问题就是这么处理这个奇偶了。经尝试,奇偶是指像素(x,y),x+y区分偶数或奇数。

代码

#-*- coding: utf-8 -*-
import os

#判断图像是否存在,不存在则下载
if os.path.isfile(�[......]

>> 阅读全文...

PythonChallenge系列-P10 序列计算

What Are You Looking At

PythonChallenge系列第十题P10(http://www.pythonchallenge.com/pc/return/bull.html

图像下方文字提示len(a[30])=? ,再点击图像,打开的页面上提示了一行序列

a = [1, 11, 21, 1211, 111221,

所以,本题思路就是找a序列的规律,然后计算a[30]的长度。

问题的关键:a序列的规律

1       1
11      前一个数的描述:1个1
21      前一个数的描述:2个1
1211    前一个数的描述:1个2, 2个1
111221[......]

>> 阅读全文...

PythonChallenge系列-P9 图像绘制

Connect The Dots

PythonChallenge系列第九题P9(http://www.pythonchallenge.com/pc/return/good.html,如需登陆:用户名huge,密码file

页面标题为connect the dots,和图像展示意义一样,就是告诉我们将点连接起来。问题是,点在哪里?

打开网页源码,里面有一个first和一个second,然后提示first+second,意思就是两者的组合能够得到坐标点,+号是什么意思,因为first和second的数字位数并不相等,不能简单的由(first,second)组成一个(x,y)坐标。

那么是不是[……]

>> 阅读全文…

python 天气预报(v2.0)

上一个版本【python 自动获取天气程序(Version1.0)】实现了自动获取当前城市的天气信息,功能很简单,而且只是字符脚本。这一版本Version2.0中增强了天气预报功能,并提供了UI界面,使用起来更友好。

软件的主界面

main

 

主要菜单

menu_weather

 

 

工具栏

toolbar

软件功能

1. 启动时,自动获取用户当前城市

2.  选择任意自定义城市为当前城市,并查看该城市天气信息

city

3. 显示城市当前的天气情况:天气、温度、湿度、风力、风向、高温低温

4. 显示城市当前天气的各种天气指数:天气指数、舒适度、穿[……]

>> 阅读全文…

wxPython布局

布局方式有两个,绝对布局和相对布局。绝对布局就是手动的设定各个窗体、控件的大小和位置,这有一个缺点是当主窗体的尺寸可变且变化时,各个控件的位置不会随之相应的改变。而使用相对布局则主窗体的尺寸变化时,各个控件会随之相应的变化,以适应新的窗口大小。

相对布局使用布局管理器Sizer实现,wxPython中的布局管理器有:BoxSizer(行、列),GridSizer(等大小的二维网格),FlexGridSizer(大小可不等的二维网格),GridBagSizer(可设定大小、跨行列的二维网格),StaticBoxSizer(在BoxSizer外加了标题和环线)。BoxSizer和GridSi[……]

>> 阅读全文…

基于Python和wxPython的代码格式化工具V1.0

近期在看Python,感叹Python的字符串处理功能之强大,突然想自己写一个格式化代码的脚本练练手,开始构想的功能很简单,读取未格式化的代码,然后将其缩进(类似于Visual Studio中的代码格式化)。主要是处理大括号{、}的问题。昨天写了一段脚本,实现了这个功能。想到自己反正要学Python的GUI编程,索性就安装了wxPython,因为有好几年的MFC开发基础,所以UI框架写得也很快,今天就完成了。于是就有了本文的这个小程序-代码格式化工具V1.0。利用这篇博客详细讲一下程序开发思路和源码。

主界面.jpg

功能

目前完成的功能还是很简单,核心就是代码的格式化,辅助有文件的打开、保存。[……]

>> 阅读全文…