日期和时间

time calendar 模块,可用于格式化日期和时间。

time.time() 获取当前时间戳,1970年前的不行。获取到的是秒数。

python 函数一般用一个元组装起来的9组数字处理时间。比如 time.loacltime(time.time()) 就会返回。0到8的元素分别是:年月日时分秒,星期几,当天是今年的第几天,夏令时。

time.asctime() 可以把时间元组转化为形如 Thu Apr 7 10:05:21 2016 的较简单的可读时间模式。

time.strftime() 可以格式化时间。如 time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) .

ymdHMS:年月日时分秒。

%y:两位的年份。

%Y:四位的年份。

%H:24h制小时。

%I:12h制小时。

aAbB:简化/完整的星期/月份名。

其他用不太到先略去~

calendar 可以获取某月日历。如 calendar.month(2016, 1).

以下输出2016年1月份的日历:
    January 2016
Mo Tu We Th Fr Sa Su
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

函数

形如:

def functionname( parameters ):
   "函数_文档字符串" # 文档说明,加不加都行
   function_suite
   return [expression]

函数传不可变变量时,是传入的拷贝的参数。传可变变量是直接对原变量操作。

参数可以顺序不一致,解释器会根据名称匹配参数:

#可写函数说明
def printinfo( name, age ):
   "打印任何传入的字符串"
   print "Name: ", name
   print "Age ", age
   return
 
#调用printinfo函数
printinfo( age=50, name="miki" )

默认参数:没有被传入的参数的初值设置。

def printinfo( name, age = 35 ):
   "打印任何传入的字符串"
   print "Name: ", name
   print "Age ", age
   return

不定长参数:

# 可写函数说明
def printinfo( arg1, *vartuple ):
   "打印任何传入的参数"
   print "输出: "
   print arg1
   for var in vartuple:
      print var
   return
 
# 调用printinfo 函数
printinfo( 10 )
printinfo( 70, 60, 50 )

匿名函数: lanbda 函数,只是一个表达式。

sum = lambda arg1, arg2: arg1 + arg2
 
# 调用sum函数
print "相加后的值为 : ", sum( 10, 20 )

return, 全局变量,局部变量,作用域不加赘述。

模块

.py 结尾的 python 文件,包含了对象定义、语句。能更有逻辑的组织代码段。

前面已经知道 import 即可引入,且写多少次也只会引用一次。

只导入一部分:from modname import name1, name2……

from modname import * 导入包中所有项目,不宜过多使用。

导入搜索顺序:先搜索当前目录,然后在 shell 搜索,最后查看默认路径。

dir(modname) 可以查看模块所有内容名称。

导入后,模块顶层部分的代码只会被执行一次,如果想多次执行可以 reload(modname)

包是一个文件夹,其中包含了模块,子包等。其中必须存在 init.py 文件,哪怕其内容为空。 这个文件用于标识当前文件夹是一个包,也会在 import 时 执行。

然后其他 py 文件里通常放一些功能函数。

IO

最简单: print()

输入: raw_input() input(),input 可以接收表达式并计算结果。

打开文件

file object = open(file_name [, access_mode][, buffering])

access_mode 是打开方式,如 r 只读,w 只写,r+ 读写,w+ 读写如果不存在则新建。

buffering 是是否有寄存,以及其大小。

属性

描述

file.closed

返回true如果文件已被关闭,否则返回false。

file.mode

返回被打开文件的访问模式。

file.name

返回文件的名称。

file.softspace

如果用print输出后,必须跟一个空格符,则返回false。否则返回true。

file.flush()

立刻刷新缓冲区,写入文件

fo.close() 刷新缓存区里还未写入的内容,并关闭该文件。

fo.read([count]) 读取 count 个字。readline([size]) 读 size 行。

fo.write(string) 追加到文件结尾,不会自动加 \n。

读写后指针会继续刚才的位置读写,tell() 方法可以查看其当前位置。seek(offset, [from]) 是将指针从给定位置移动 offset 个距离,比如指针回到文件最开头就是 seek(0,0)

重命名:os.rename(current_file_name, new_file_name)

删除文件:os.remove(file_name)

创建目录:os.mkdir(dirname)

查看当前目录:os.getcwd()

改变当前目录,进入新的目录:os.chdir(newdir)

删除当前目录:os.rmdir('dirname')

异常处理

try…except

try:
	<语句>        #运行别的代码
except <名字>:
	<语句>        #如果在try部份引发了'name'异常
except <名字>,<数据>:
	<语句>        #如果引发了'name'异常,获得附加的数据
else:
	<语句>        #如果没有异常发生
finally:
    <语句>		#无论如何都执行

名字里写异常名字。可以写多个,不写就是只要发生异常就执行。

数据是可以带进的参数.

# 定义函数
def temp_convert(var):
    try:
        return int(var)
    except ValueError, Argument:
        print "参数没有包含数字\n", Argument

# 调用函数
temp_convert("xyz")

raise

raise 可以手动触发异常。比如 raise Exception, "Invalid Level!" 就会触发名为 Exception 的异常,且传入参数为 “Invalid Level!”

自定义异常

通过创建异常类(以一个现有类为基类)。

class Networkerror(RuntimeError):
    def __init__(self, arg):
        self.args = arg
try:
    raise Networkerror("Bad hostname") # 参数被赋给 e.args
except Networkerror,e:
    print e.args