Python - 模块

模块,用一些代码实现了某个功能的代码集合。

类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。

如:os 是系统相关的模块;

模块分为三种:
  • 自定义模块
  • 第三方模块
  • 内置模块

一、time模块

>>> import time
>>> time.sleep(1)      #睡,后面指定秒数。

>>> time.time()        #返回当前时间的时间戳,每个设备的时间戳都是从1970年1月1日开始算起
1503076001.620359

>>> time.ctime()       #返回当前日期时间,字符串格式
'Fri Aug 18 19:12:28 2017'

>>> time.gmtime()      #得到struct_time格式的年月日,时分秒的数值,这个是格林威治时间
time.struct_time(tm_year=2017, tm_mon=8, tm_mday=18, tm_hour=17, tm_min=13, tm_sec=36, tm_wday=4, tm_yday=230, tm_isdst=0)

>>> time.localtime()   #当地时间
time.struct_time(tm_year=2017, tm_mon=8, tm_mday=18, tm_hour=19, tm_min=15, tm_sec=45, tm_wday=4, tm_yday=230, tm_isdst=1)

>>> time.mktime(time.localtime())  #把struct_time格式的时间,转换为时间戳
1503076638.0

>>> time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime())   #把struct_time格式的时间转换为字符串格式
'2017-08-18 17:18:38'

>>> time.strptime("2017-08-18 19:19","%Y-%m-%d %H:%M") #把字符串格式的时间转换为struct_time格式
time.struct_time(tm_year=2017, tm_mon=8, tm_mday=18, tm_hour=19, tm_min=19, tm_sec=0, tm_wday=4, tm_yday=230, tm_isdst=-1)

二、datetime模块

>>> import datetime
>>> datetime.date.today()  #输入当天日期
2017-08-18

>>> datetime.datetime.now()  #输出当前时间
2017-08-18 19:24:03.632905   

>>> datetime.datetime.now().timetuple()   #转换为struct_time格式
time.struct_time(tm_year=2017, tm_mon=8, tm_mday=18, tm_hour=19, tm_min=25, tm_sec=48, tm_wday=4, tm_yday=230, tm_isdst=-1)

>>> datetime.date.fromtimestamp(time.time())   #把时间戳格式转为日期
2017-08-18   

>>> datetime.datetime.now().replace(2018,9,13)  #替换为指定时间
2018-09-13 19:28:59.757380   

>>> datetime.datetime.strptime("2017-08-18 17:26","%Y-%m-%d %H:%M") 
2017-08-18 17:26:00

new_date = datetime.datetime.now() + datetime.timedelta(days=10)  #比现在加10天
print(new_date)
2017-08-28 19:35:49.095399

new_date = datetime.datetime.now() + datetime.timedelta(days=-10)  #比现在减10天
print(new_date)
2017-08-08 19:35:49.095433

new_date = datetime.datetime.now() + datetime.timedelta(hours=-10)  #比现在减10小时
print(new_date)
2017-08-18 09:35:49.095441

new_date = datetime.datetime.now() + datetime.timedelta(seconds=120)  #比现在加120秒
print(new_date)     
2017-08-18 19:37:49.095447

三、sys模块

sys.argv        #获取给脚本传入的参数
sys.path        #获取路径
sys.exit()      #退出程序

>>> sys.version  #python解释器版本信息
'3.6.1 |Anaconda 4.4.0 (x86_64)| (default, May 11 2017, 13:04:09) \n[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]'   
  
>>> sys.maxsize  #返回最大值int
9223372036854775807
 
>>> import sys   #返回操作系统平台名称
>>> sys.platform 
'darwin'

sys.stdout.write('#')   打印写入的数据,不会换行,(可以用来模拟进度条),
for i in range(31):    
    sys.stdout.write('\r') #每次先清空原来数据    
    sys.stdout.write('%s%% | %s' % (int(i/30*100),int(i/30*100)*'#'))    
    sys.stdout.flush()  #强制刷新到屏幕    
    time.sleep(0.2) #睡两秒
>>> 100% | ####################################################################################################

val = sys.stdin.readline()[:1]   #读取输入内容

四、pickle & json模块

用于序列化的两个模块

json,用于字符串 和 python数据类型间进行转换

pickle,用于python特有的类型 和 python的数据类型间进行转换

Json模块提供了四个功能:dumps、dump、loads、load

pickle模块提供了四个功能:dumps、dump、loads、load

f.write(pickle.dumps(x)) 等同于 pickle.dump(x,f) #把x写入f

pickle.loads(f.read()) 等同于 pickle.load(f) 读取f文件

#定义一些数据,将其写入一个文件

import pickle

accounts={
    1000:{
        'name':'Alex',
        'age':19,
        'sexy':'male',
        'balance':15000,
        'email':'alex1997@gmail.com',
        'phone':'0752858987'
    },
    1001:{
        'name':'Kevin',
        'age':29,
        'sexy':'male',
        'balance':20000,
        'email':'kevin87@gmail.com',
        'phone':'0798548987'
    }
}

with open('account.db','wb') as f:
    f.write(pickle.dumps(accounts))  #把上面数据写入到account.db文件中
#去购物,Alex消费了500,并修改原数据

import pickle

with open('account.db','rb') as f:
    r = pickle.load(f)     #等同pickle.loads(f.read)   #加载字典数据
    print(r)

r[1000]['balance'] -= 500   #扣钱
with open('account.db','wb') as f:
    pickle.dump(r,f)        #等同f.write(pickle.dumps(r))  #然后重新写入,
#检查数据书否被修改

import pickle

with open('account.db','rb') as f:
    f = pickle.load(f)        #加载字典数据
    print(f)

评论

此博客中的热门博文

Skype 常用命令

三星xpress M2070W 如何连接 WiFi

Python - shutil 模块