整理给自己的Python烹饪书

Published: 2015-07-06

Tags: Python

本文总阅读量
  1. 时间日期

  2. 编码相关

  3. 获取FTP文件

  4. 打包解包


1. 时间日期

Time 模块

time模块表示时间有两种形式,分别为时间戳数组(struct_time)

>>> import time
>>> print time.time()
1434010963.16
>>> print time.localtime()
time.struct_time(tm_year=2015, tm_mon=6, tm_mday=11, tm_hour=16, tm_min=23, tm_sec=5, tm_wday=3, tm_yday=162, tm_isdst=0)

两种表示法可以通过gmtime()mktime()相互转换。

>>> import time
>>> print time.gmtime(time.time())
time.struct_time(tm_year=2015, tm_mon=6, tm_mday=11, tm_hour=8, tm_min=35, tm_sec=39, tm_wday=3, tm_yday=162, tm_isdst=0)
>>> print time.mktime(time.localtime())
1434011755.0
>>> 

使用strptime可以将字符串转换为数组时间格式。

>>> import time
>>> time.strptime('20150306', '%Y%m%d')
time.struct_time(tm_year=2015, tm_mon=3, tm_mday=6, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=65, tm_isdst=-1)

使用strftime可以将数组时间格式转换为字符串。

>>> import time
>>> print time.strftime('%Y-%m-%d', time.localtime())
2015-06-11
>>> print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
2015-06-11 16:47:32

Datetime 模块

获取当前时间

>>> import datetime
>>> print datetime.datetime.now()
2015-06-11 17:13:45.427000

将字符串转换为datetime格式的时间

string = '2015-03-06'
d1 = datetime.datetime.strptime(string, '%Y-%m-%d')

也可以手动赋值,生成时间

>>> import datetime
>>> print datetime.datetime(2015, 3, 6, 12, 1, 15)
2015-03-06 12:01:15

像time模块一样,同样可以使用strftime()来将时间转换为字符串

>>> import datetime
print datetime.datetime(2015, 3, 6, 12, 1, 15).strftime('%Y%m%d')
20150306

time与datetime之间的互相转换

>>> datetime.datetime.fromtimestamp(time.time())
datetime.datetime(2015, 6, 11, 17, 28, 38, 7000)

求指定日期的n天后的日期

#d1 = datetime.datetime(2015, 03, 06)
>>> string = '2015-03-06'
>>> d1 = datetime.datetime.strptime(string, '%Y-%m-%d')
>>> d2 = d1 + datetime.timedelta(days=6)
>>> print d2.strftime('%Y-%m-%d')
2015-03-12

2. 字符编码

>>> s = "中文"
>>> type(s)
<type 'str'>
>>> u = u"中文"
>>> type(u)
<type 'unicode'>

如上可知,我们定义的变量s是字符串类型的,在前面加上一个u限定,那么变量u就是unicode类型的

Unicode 编码成 UTF-8, GB2312

>>> u = u"中文"
>>> type(u)
<type 'unicode'>
>>> utf8 = u.encode("utf-8")
>>> type(utf8)
<type 'str'>
>>> print utf8
中文
>>> utf8
'\xe4\xb8\xad\xe6\x96\x87'
>>> 
>>> gb2312 = u.encode("gb2312")
>>> gb2312
'\xd6\xd0\xce\xc4'

我们之前的s, 打印出来看看它的编码

>>> s = "中文"
>>> type(s)
<type 'str'>
>>> s
'\xe4\xb8\xad\xe6\x96\x87'

跟上面对比可知,Python的默认的字符编码就是UTF-8的


3. 获取FTP文件

#!/usr/bin/env python
#encoding:utf-8
import ftplib
import patoolib

path = 'path/to/file'
filename = 'filename.tar.bz2'

ftp = ftplib.FTP("FTP IP")
ftp.login("FTP username", "FTP password")
ftp.cwd(path)
ftp.retrbinary("RETR " + filename ,open(filename, 'wb').write)
ftp.quit()

4. 打包解包

RAR解压缩

系统Linux下测试正常使用

安装patool包

pip install patool

确保系统安装有(rar|unrar|7z) 我这里安装的是unrar (sudo dnf install unrar)

import patoolib
patoolib.extract_archive("foo_bar.rar", outdir=".")

摘自: http://stackoverflow.com/questions/17614467/how-can-unrar-a-file-with-python