博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2.6python基础之常用模(二)
阅读量:4568 次
发布时间:2019-06-08

本文共 6416 字,大约阅读时间需要 21 分钟。

  1. time & datetime 模块
    一、在Python中,通常有这几种方式来表示时间:1.时间戳 2.格式化的时间字符串 3.元组(struct_time)共九个元素。由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。

     

  2. 定义
    UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(Daylight Saving Time)即夏令时。时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。下面列出这种方式元组中的几个元素:索引(Index)    属性(Attribute)    值(Values)0     tm_year(年)                 比如2011 1     tm_mon(月)             1 - 122     tm_mday(日)                 1 - 313     tm_hour(时)                 0 - 234     tm_min(分)             0 - 595     tm_sec(秒)             0 - 616     tm_wday(weekday)            0 - 6(0表示周日)7     tm_yday(一年中的第几天)    1 - 3668     tm_isdst(是否是夏令时)            默认为-1

     

  3. time模块的方法
    time.localtime([secs]):将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。time.gmtime([secs]):和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。time.time():返回当前时间的时间戳。time.mktime(t):将一个struct_time转化为时间戳。time.sleep(secs):线程推迟指定的时间运行。单位为秒。time.asctime([t]):把一个表示时间的元组或者struct_time表示为这种形式:'Sun Oct 1 12:04:38 2017'。如果没有参数,将会将time.localtime()作为参数传入。time.ctime([secs]):把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。time.strftime(format[, t]):把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。举例:time.strftime("%Y-%m-%d %X", time.localtime()) #输出'2017-10-01 12:14:23'time.strptime(string[, format]):把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。举例:time.strptime('2017-10-3 17:54',"%Y-%m-%d %H:%M") #输出 time.struct_time(tm_year=2017, tm_mon=10, tm_mday=3, tm_hour=17, tm_min=54, tm_sec=0, tm_wday=1, tm_yday=276, tm_isdst=-1)

     

  4. datetime模块
    datetime模块定义了下面这几个类:datetime.date:表示日期的类。常用的属性有year, month, day;datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;datetime.datetime:表示日期时间。datetime.timedelta:表示时间间隔,即两个时间点之间的长度。datetime.tzinfo:与时区有关的相关信息。(这里不详细充分讨论该类,感兴趣的童鞋可以参考python手册)我们需要记住的方法仅以下几个:1.d=datetime.datetime.now() 返回当前的datetime日期类型d.timestamp(),d.today(), d.year,d.timetuple()等方法可以调用2..datetime.date.fromtimestamp(322222) 把一个时间戳转为datetime日期类型3.时间运算>>> datetime.datetime.now()datetime.datetime(2017, 10, 1, 12, 53, 11, 821218)>>> datetime.datetime.now() + datetime.timedelta(4) #当前时间 +4天datetime.datetime(2017, 10, 5, 12, 53, 35, 276589)>>> datetime.datetime.now() + datetime.timedelta(hours=4) #当前时间+4小时datetime.datetime(2017, 10, 1, 16, 53, 42, 876275)4.时间替换>>> d.replace(year=2999,month=11,day=30)datetime.date(2999, 11, 30)

     

  5. random模块的使用
    >>> random.randrange(1,10) #返回1-10之间的一个随机数,不包括10>>> random.randint(1,10) #返回1-10之间的一个随机数,包括10>>> random.randrange(0, 100, 2) #随机选取0到100间的偶数>>> random.random()  #返回一个随机浮点数>>> random.choice('abce3#$@1') #返回一个给定数据集合中的随机字符'#'>>> random.sample('abcdefghij',3)  #从多个字符中选取特定数量的字符['a', 'd', 'b']#生成随机字符串>>> import string >>> ''.join(random.sample(string.ascii_lowercase + string.digits, 6)) '4fvda1'#洗牌>>> a[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> random.shuffle(a)>>> a[3, 0, 7, 2, 1, 6, 5, 8, 9, 4]

     

  6. os 模块
    得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()返回指定目录下的所有文件和目录名:os.listdir()函数用来删除一个文件:os.remove()删除多个目录:os.removedirs(r“c:\python”)检验给出的路径是否是一个文件:os.path.isfile()检验给出的路径是否是一个目录:os.path.isdir()判断是否是绝对路径:os.path.isabs()检验给出的路径是否真地存:os.path.exists()返回一个路径的目录名和文件名:os.path.split()     e.g os.path.split('/home/swaroop/byte/code/poem.txt') 结果:('/home/swaroop/byte/code', 'poem.txt') 分离扩展名:os.path.splitext()       e.g  os.path.splitext('/usr/local/test.py')    结果:('/usr/local/test', '.py')获取路径名:os.path.dirname()获得绝对路径: os.path.abspath()  获取文件名:os.path.basename()运行shell命令: os.system()读取操作系统环境变量HOME的值:os.getenv("HOME") 返回操作系统所有的环境变量: os.environ 设置系统环境变量,仅程序运行时有效:os.environ.setdefault('HOME','/home/alex')给出当前平台使用的行终止符:os.linesep    Windows使用'\r\n',Linux and MAC使用'\n'指示你正在使用的平台:os.name       对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'重命名:os.rename(old, new)创建多级目录:os.makedirs(r“c:\python\test”)创建单个目录:os.mkdir(“test”)获取文件属性:os.stat(file)修改文件权限与时间戳:os.chmod(file)获取文件大小:os.path.getsize(filename)结合目录名与文件名:os.path.join(dir,filename)改变工作目录到dirname: os.chdir(dirname)获取当前终端的大小: os.get_terminal_size()杀死进程: os.kill(10884,signal.SIGKILL)

     

  7. sys模块
    sys.argv           命令行参数List,第一个元素是程序本身路径sys.exit(n)        退出程序,正常退出时exit(0)sys.version        获取Python解释程序的版本信息sys.maxint         最大的Int值sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值sys.platform       返回操作系统平台名称sys.stdout.write('please:')  #标准输出 , 引出进度条的例子, 注,在py3上不行,可以用print代替val = sys.stdin.readline()[:-1] #标准输入sys.getrecursionlimit() #获取最大递归层数sys.setrecursionlimit(1200) #设置最大递归层数sys.getdefaultencoding()  #获取解释器默认编码sys.getfilesystemencoding  #获取内存数据存到文件里的默认编码

     

  8. shutil模块
    shutil.copyfileobj(fsrc, fdst[, length])将文件内容拷贝到另一个文件中import shutilshutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))
    shutil.copyfileobj(fsrc, fdst[, length])将文件内容拷贝到另一个文件中import shutilshutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))

     

  9. json&pickle模块
    什么叫序列化?序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes为什么要序列化?你打游戏过程中,打累了,停下来,关掉游戏、想过2天再玩,2天之后,游戏又从你上次停止的地方继续运行,你上次游戏的进度肯定保存在硬盘上了,是以何种形式呢?游戏过程中产生的很多临时数据是不规律的,可能在你关掉游戏时正好有10个列表,3个嵌套字典的数据集合在内存里,需要存下来?你如何存?把列表变成文件里的多行多列形式?那嵌套字典呢?根本没法存。所以,若是有种办法可以直接把内存数据存到硬盘上,下次程序再启动,再从硬盘上读回来,还是原来的格式的话,那是极好的。
    用于序列化的两个模块json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进行转换Json模块提供了四个功能:dumps、dump、loads、loadpickle模块提供了四个功能:dumps、dump、loads、load
    import pickledata = {
    'k1':123,'k2':'Hello'}# pickle.dumps 将数据通过特殊的形式转换位只有python语言认识的字符串p_str = pickle.dumps(data)print(p_str)#pickle.dump 将数据通过特殊的形式转换位只有python语言认识的字符串,并写入文件with open('D:/result.pk','wb',encoding='utf8') as fp: pickle.dump(data,fp)import json# json.dumps 将数据通过特殊的形式转换位所有程序语言都认识的字符串j_str = json.dumps(data)print(j_str)#pickle.dump 将数据通过特殊的形式转换位只有python语言认识的字符串,并写入文件with open('D:/result.json','wb',encoding='utf8') as fp: json.dump(data,fp)
    json vs pickle:JSON:优点:跨语言、体积小缺点:只能支持int\str\list\tuple\dictPickle:优点:专为python设计,支持python所有的数据类型缺点:只能在python中使用,存储数据占空间大

     

  10. 掌握shelve模块的使用
    shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式
    序列化import shelvef = shelve.open('shelve_test')  # 打开一个文件names = ["alex", "rain", "test"]info = {
    'name':'alex','age':22}f["names"] = names # 持久化列表f['info_dic'] = infof.close()
    反序列化import shelved = shelve.open('shelve_test')  # 打开一个文件print(d['names'])print(d['info_dic'])#del d['test'] #还可以删除

     

转载于:https://www.cnblogs.com/sszy/p/9072718.html

你可能感兴趣的文章
深入理解C语言 - 指针使用的常见错误
查看>>
JAVA Excel API学习案例
查看>>
网页打开速度慢的原因及N种解决方法
查看>>
监控线上服务的小脚本
查看>>
ultraedit 实际应用技巧
查看>>
mysql_select 单表查询
查看>>
磁盘配额
查看>>
dns视图搭建
查看>>
WPF 中动态改变控件模板
查看>>
ubuntu Ctrl+Alt+F1 进入终端字符界面 登录出现login incorrect解决办法
查看>>
珍爱生命,远离JS=>JS避坑记
查看>>
Bundle对象实现不同Activity之间数据传递
查看>>
TeamViewer 远程应用不显示,空白解决方案
查看>>
人机交互第五次作业
查看>>
linux下MySQL停止和重启
查看>>
Unity Particle System Sorting Order
查看>>
ANDROID_HOME on Mac OS X
查看>>
Real-Time Many-Light Management and Shadows with Clustered Shading
查看>>
.net代码修改webconfig
查看>>
1084 - Winter
查看>>