1. 和时间有关的函数和用法
1. 导入 time 模块
import time
2. 设置时间格式
TIMEFORMAT = "%Y-%m-%d %H:%M:%S"
3. time.time() 用于取当前时间,为一个小数,代表从 epoch: 1970 年 1 月 1 日 00:00:00 开始到当前的秒数。
>>> time.time()
1180759620.859
4. time.localtime() 用于返回我们熟悉的用 tuple 存储的时间
>>> time.localtime()
(2007, 6, 2, 12, 47, 7, 5, 153, 0)
5. time.strftime() 用于按照我们之前所定义的时间格式来返回时间
>>> time.strftime( TIMEFORMAT, time.localtime() )
‘2007-06-02 12:54:31′
6. 表示时间的tuple数组结构
| 索引(Index) | 属性(Attribute) | 值(Values) |
|---|---|---|
| 0 | tm_year(年) | 比如2011 |
| 1 | tm_mon(月) | 1 - 12 |
| 2 | tm_mday(日) | 1 - 31 |
| 3 | tm_hour(时) | 0 - 23 |
| 4 | tm_min(分) | 0 - 59 |
| 5 | tm_sec(秒) | 0 - 61 |
| 6 | tm_wday(weekday) | 0 - 6(0表示周日) |
| 7 | tm_yday(一年中的第几天) | 1 - 366 |
| 8 | tm_isdst(是否是夏令时) | 默认为-1 |
7. time.mktime(time.localtime())
使用mktime函数,传入tuple数组,可以返回对应的时间戳。
2. Python 读写文件
1. 读文件
input = open('data', 'r')
record = input.readline()
input.close()
使用 input.read() 可以将文件内容读作一个大字符串进行返回
2. 写文件,'w' 参数代表将原有文件清空后再写入,'a' 参数表示向文件追加
output = open('data', 'w')
output.write("test")
output.close()
3. Python 续行符 '\'
1. 第一种是直接用回车,但是不是很安全。
2. 第二种是在当前行的尾部加上 '\' 符,在下一行继续输入,此时后续的行可以以任何方式缩进,不用遵守python的严格缩进规则。一般在小括号、中括号、大括号里定义的内容不需要用'\'分割,直接回车即可。
4. 使用 Python 命令执行文件时的参数传递
python 命令后的内容共同组成参数列表实现参数传递,可以通过 sys 模块的 argv 变量访问到。
例如: python kfk_setter.py video-meta video2feeds -1
print sys.argv
结果:['kfk_setter.py', 'video-meta', 'video2feeds', '-1'] 参数是以字符串的形式传递
5. 字符串连接的三种方式
1. 直接通过加号(+)操作符连接 例如:website = 'python' + 'tab' + '.com'
由于python中字符串属于不可变的对象,因此每次执行一个+操作就会生成一个新的字符串,因此连续相加的字符串很多时效率较低。
2. join 方法
listStr = ['python', 'tab', '.com']
website = ''.join(listStr)
对多个字符进行连接时效率高,只会有一次内存的申请。而且如果是对list的字符进行连接的时候,这种方法必须是首选。
3. 字符串格式化
website = '%s%s%s' % ('python', 'tab', '.com')
这种方式非常常用
6. Python中的eval()、exec()及其相关函数
1. eval() 与 exec() 函数的形式和功能类似,都是通过传递全局变量和局部变量参数来实现字符串或者code对象的执行。区别在于,eval() 是用来计算指定表达式的值,也就是说它执行的python语句只能是单个表达式(不支持任意形式的赋值运算),而不是是复杂的逻辑,eval() 函数有返回值;exec() 函数可以动态运行代码段,exec() 函数的返回值永远为 None。
2. eval() 函数
1. 函数形式 eval(expression, globals = None, locals = None)
其中:expression 为表达式参数,可以为字符串,也可以是由 compile() 函数创建的 code 对象实例。如果它是一个字符串,它会被当作一个(使用globals和locals参数作为全局和本地命名空间的)Python表达式进行分析和解释。
globals 为可选参数,表示全局变量空间(存放全局变量),必须是一个字典对象。
locals 表示局部变量空间(存放局部变量),如果被提供,可以是任何映射对象。如果该参数被忽略,那么它将会取与globals相同的值。
上述两个参数可以自己赋予新的变量名和值,也可以用当前已经定义变量进行映射,对后者的更改会产生实际效果(在 exec() 函数中才能进行更改)
如果 globals 和 locals 参数都被忽略,那么它们将取 eval() 函数被调用环境下的全局变量空间和局部变量空间。
返回值:如果 expression 是一个 code 对象,且创建该 code 对象时,compile() 函数的 mode 参数为 'exec',那么返回值为 None;否则如果 expression 语句是一个输出语句,如 print,那么返回为 None;其他情况下 expression 表达式的结果就是 eval() 函数的返回值。
2. 用法示例
self.filter_exp = data.get('ucp_trespassing_field', {}).get('surface_type', '') != 'ARTICLE_SURFACE'
eval('#coding=%s\n%s' % ('utf8', self.filter_exp), {}, local_vars) 在 expression 表达式中声明了编码类型和具体表达式的内容通过 self.filter_exp 变量(逻辑表达式)进行传递,local_vars 为字典定义的局部空间
3. exec() 函数
1. exec(object [, globals [, locals ]])
参数说明:obeject 为需要执行的 Python 代码,可以是字符串或者code对象;后面参数同上
返回值:exec() 函数的返回值始终为 None
2. 用法示例
mapped_data = {} mapped_data['url'] = 'http://baijiahao.baidu.com/u?app_id=%s' % data['id'] mapped_data['status'] = 'publish' if data['status'] == 'pass' else 'unpublish' mapped_data_dict['data'] = mapped_data