D05——C语言基础学PYTHON
Posted m1racle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了D05——C语言基础学PYTHON相关的知识,希望对你有一定的参考价值。
C语言基础学习PYTHON——基础学习D05
20180815内容纲要:
1 模块
2 包
3 import的本质
4 内置模块详解
(1)time&datetime
(2)datetime
(3)random
(4)os
(5)sys
(6)json&pickle
(7)shelve
(8)xml
(9)shutil
(10)PyYaml
(11)configpaser
(12)hashlib
(13)re
5 练习:开发一个简单的python计算器(挑战性很强)
1 模块
模块:
>>>定义:本质就是.py结尾的PYTHON文件,用来从逻辑上组织python代码(变量、函数、类、逻辑),实现一个功能。
>>>导入方法:
1 import module_name 调用module_name.xxx 2 from module_name import * 直接调用即可(导入优化) 3 from module_name import func_module_name as func 4 form . improt module_name 从当前目录下导入module_name
>>>模块分类
- 自定义模块
- 内置标准模块(又称标准库)
- 开源模块
自定义模块和开源模块的使用参考 http://www.cnblogs.com/wupeiqi/articles/4963027.html
2 包
包:用来从逻辑上组织模块,本质就是一个目录,(必须带有一个__init__.py文件),
那么在导入包之后改如何调用包下面的.py文件呢?
1 #Author:ZhangKanghui 2 print("我最美") 3 from . import foo
1 #Author:ZhangKanghui 2 def foo(): 3 print("我喜欢你")
1 #Author:ZhangKanghui 2 import package 3 4 package.foo.foo()
3 import的本质
import的本质(路径搜索和搜索路径):
>>>导入模块的本质就是把python文件解释一遍
>>>导入包的本质就是执行包下的__inint__.py文件
在导入的过程中,要确保存储路径在同级目录下。如果不在那怎么解决呢?
1 #Author:ZhangKanghui 2 3 import package#直接运行 4 5 import sys 6 print(sys.path) #获取当前文件的存储位置 7 8 import os 9 print(os.path.abspath(__file__)) #获取当前文件的存储路径 10 print(os.path.dirname(os.path.abspath(__file__))) 11 12 #添加路径: 13 sys.path.append() #追加到sys.path的最后,如果想放到前面怎么办 14 sys.path.insert() 15 16 #os、sys模块下面有详解
4 内置模块详解
(1)time
首先,在python中有这么几种表示时间的方法:
(1)时间戳
(2)元组(struct_time)共有九个元素:年,月,日,小时,分钟,秒,一周的第几天,一年的第几天,时区
(3)格式化的时间字符串
1 >>> import time 2 >>> time.time() 3 1534000340.4254425 #这是从1970年开始计算至今的秒数。 4 #这是命令行操作 5
1 >>> time.localtime() 2 time.struct_time(tm_year=2018, tm_mon=8, tm_mday=11, tm_hour=23, tm_min=17, tm_sec=19, tm_wday=5, tm_yday=223, tm_isdst=0)
1 x =time.localtime() 2 >>> x 3 time.struct_time(tm_year=2018, tm_mon=8, tm_mday=12, tm_hour=0, tm_min=0, tm_sec=43, tm_wday=6, tm_yday=224, tm_isdst=0) 4 >>> time.strftime("%Y-%m-%d %H:%m:%S",x) 5 \'2018-08-12 00:08:43\'
科普:
>>>UTC(Coordinated Universal Time,世界协调时)即格林威治天文时间,世界标准时间。在中国为UTC+8,
>>>DST(Daylight Saving Time)即夏令时
在补充一点格式:
>>>comomly used format code:
1 %Y Year with century as a decimal number. 2 %m Month as a decimal number [01,12]. 3 %d Day of the month as a decimal number [01,31]. 4 %H Hour (24-hour clock) as a decimal number [00,23]. 5 %M Minute as a decimal number [00,59]. 6 %S Second as a decimal number [00,61]. 7 %z Time zone offset from UTC. 8 %a Locale\'s abbreviated weekday name. 9 %A Locale\'s full weekday name. 10 %b Locale\'s abbreviated month name. 11 %B Locale\'s full month name. 12 %c Locale\'s appropriate date and time representation. 13 %I Hour (12-hour clock) as a decimal number [01,12]. 14 %p Locale\'s equivalent of either AM or PM.
a time.localtime() 将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。
b time.gmtime() 将一个时间戳转换为UTC时区(0时区)的struct_time。
>>> time.localtime() time.struct_time(tm_year=2018, tm_mon=8, tm_mday=15, tm_hour=10, tm_min=3, tm_sec=22, tm_wday=2, tm_yday=227, tm_isdst=0) >>> time.gmtime() time.struct_time(tm_year=2018, tm_mon=8, tm_mday=15, tm_hour=2, tm_min=3, tm_sec=30, tm_wday=2, tm_yday=227, tm_isdst=0) #这也验证了中国时区是UTC+8
c time.mktime() 将一个struct_time转化为时间戳
1 >>> x =time.localtime() 2 >>> x 3 time.struct_time(tm_year=2018, tm_mon=8, tm_mday=15, tm_hour=10, tm_min=7, tm_sec=30, tm_wday=2, tm_yday=227, tm_isdst=0) 4 >>> time.mktime(x) 5 1534298850.0
d time.strftime(format[,t])
1 >>>import time 2 >>> x =time.localtime() 3 >>> x 4 time.struct_time(tm_year=2018, tm_mon=8, tm_mday=15, tm_hour=10, tm_min=13, tm_sec=47, tm_wday=2, tm_yday=227, tm_isdst=0) 5 >>> time.strftime("%Y-%m-%d %H:%m:%S",x) 6 \'2018-08-15 10:08:47\'
e time.strptime([格式化时间, format]) 把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。
1 >>>import time 2 >>>time.strptime(\'2011-05-05 16:37:06\', \'%Y-%m-%d %X\') 3 time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6, tm_wday=3, tm_yday=125, tm_isdst=-1)
f asctime([t]) 把一个表示时间的元组或者struct_time表示为这种形式:\'Sun Jun 20 23:21:05 1993\'。如果没有参数,将会将time.localtime()作为参数传入。
g ctime([seconds]) 把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。
1 >>> time.asctime() 2 \'Sun Aug 12 23:27:28 2018\' 3 >>> time.ctime() 4 \'Sun Aug 12 23:52:40 2018\' 5 #不要忘记导入time模块哟
接下来上图~
(2)datetime
a datetime.datetime.now()
1 >>> import datetime 2 >>> datetime.datetime.now() 3 datetime.datetime(2018, 8, 12, 23, 54, 0, 324086)
b datetime.date.fromtimestamp(time.time()) 时间戳直接转成日期格式
1 >>> datetime.date.fromtimestamp(time.time()) 2 datetime.date(2018, 8, 12)
1 >>> datetime.datetime.now() + datetime.timedelta(3) 2 datetime.datetime(2018, 8, 15, 23, 55, 31, 676392)
1 >>> datetime.datetime.now() + datetime.timedelta(-3) 2 datetime.datetime(2018, 8, 9, 23, 55, 57, 20937)
1 >>> datetime.datetime.now() + datetime.timedelta(hours=3) 2 datetime.datetime(2018, 8, 13, 2, 56, 25, 388509)
1 >>> datetime.datetime.now() + datetime.timedelta(minutes=30) 2 datetime.datetime(2018, 8, 13, 0, 26, 53, 300279)
(3)random
1 #random.random() 生成一个0-1的随机浮点数 2 >>> random.random() 3 0.6813665412962242 4 #那么能不能指定范围呢? 5 #random.uniform(a,b) 6 >>> random.uniform(2,5) 7 3.7103054399886606 8 #random.randint(a,b) 用于生成一个指定范围内的整数,包括a,b 9 >>> random.randint(1,3) 10 3 11 >>> random.randint(1,3) 12 3 13 >>> random.randint(1,3) 14 1 15 #random.randrange(start,stop,step) 从指定范围获得一个随机数,但不包括stop 16 >>> random.randrange(1,3) 17 2 18 >>> random.randrange(1,3) 19 1 20 #random.choice("序列") 从序列中获取一个随机元素 21 >>> random.choice(\'hello\') 22 \'e\' 23 >>> random.choice(\'hello\') 24 \'o\' 25 >>> random.choice(\'hello\') 26 \'o\' 27 >>> random.choice(\'hello\') 28 \'o\' 29 >>> random.choice(\'hello\') 30 \'e\' 31 #random.sample("序列",k) 从序列中获取k个随机元素,必须指定k 32 >>> random.sample(\'hello\',2) 33 [\'l\', \'h\'] 34 >>> random.sample(\'hello\',2) 35 [\'h\', \'o\'] 36 >>> random.sample(\'hello\',2) 37 [\'h\', \'o\'] 38 random.shuffle() 洗牌 39 >>> l =[1,2,3,4,5,6] 40 >>> import random 41 >>> random.shuffle(l) 42 >>> l 43 [4, 6, 3, 2, 1, 5]
(2)os模块
os模块是与操作系统交互的一个接口
a os.getcwd() 获取当前工作目录
b os.chdir() 改变工作目录
1 os.getcwd() 2 \'C:\\\\Users\\\\miraacle\' 3 >>> os.chdir(\'C:\\\\Users\') 4 >>> os.getcwd() 5 \'C:\\\\Users\' 6 >>> os.chdir(r"C:\\Users\\miraacle") #对比上一条chdir命令有什么区别/ 7 >>> os.getcwd() 8 \'C:\\\\Users\\\\miraacle\'
c os.curdir() 返回当前目录
d os.pardir() 返回当前目录的上一级目录
1 >>> os.curdir 2 \'.\' 3 >>> os.pardir 4 \'..\'
d os.makedirs(r"C:\\a\\b\\c\\d") 生成多层递归目录
e os.removesdirs(r"C:\\a\\b\\c\\d") 若目录为空,则删除,并递归到上一级目录,若也为空则删除,以此类推。
f os.mkdir() 生成单级目录
g os.rmdir() 删除单级目录
h os.listdir()
1 >>> os.listdir(\'.\') 2 [\'.android\', \'.astropy\', \'.conda\', \'.ipython\', \'.matplotlib\', \'.oracle_jre_usage\', \'.Origin\', \'.PyCharm2017.1\', \'.QtWebEngineProcess\',\'3D Objects\', \'Anaconda3\', \'AppData\', \'Application Data\', \'Contacts\', \'Cookies\', \'Desktop\', \'Documents\', \'Downloads\', \'Evernote\', \'Favorites\', \'IntelGraphicsProfiles\', \'Links\', \'Local Settings\', \'LocalStorage\', \'MicrosoftEdgeBackups\', \'Music\', \'My Documents\', \'NetHood\', \'NTUSER.DAT\', \'ntuser.dat.LOG1\', \'ntuser.dat.LOG2\', \'NTUSER.DAT{2fe3e105-6421-11e8-b183-74e6e23ee3d1}.TM.blf\', \'NTUSER.DAT{2fe3e105-6421-11e8-b18374e6e23ee3d1}.TMContainer00000000000000000001.regtrans-ms\', \'NTUSER.DAT{2fe3e105-6421-11e8-b183-74e6e23ee3d1}.TMContainer00000000000000000002.regtrans-ms\', \'ntuser.ini\', \'OneDrive\', \'OneDrive.old\', \'Pictures\', \'PrintHood\', \'PyCharm 2017.1.2\', \'PycharmProjects\',\'Recent\', \'Saved Games\', \'Searches\', \'SendTo\', \'Templates\', \'Videos\', \'WebpageIcons.db\', \'「开始」菜单\', \'微博图片\', \'新建文件夹\']
1 >>> os.listdir(\'..\') 2 [\'Administrator\', \'All Users\', \'Default\', \'Default User\', \'Default.migrated\', \'desktop.ini\', \'miraacle\', \'Public\']
i os.remove() 删除一个文件
j os.rename(\'oldname\',\'newname\')
k os.stat(\'path\') 详细信息属性
1 >>> os.stat(\'微博图片\') 2 os.stat_result(st_mode=16895, st_ino=5910974511128476, st_dev=43069414, st_nlink=1, st_uid=0, st_gid=0, st_size=0, 3 st_atime=1481191549, st_mtime=1481191549, st_ctime=1462148410)
l os.sep 输出操作系统特定的路径分隔符
m os.linesep 输出当前平台使用的行终止符 dd
n os.pathsep 输出用于分割文件路径的字符串
o os.name 输出字符串当前使用的平台
>>> os.sep \'\\\\\' >>> os.linesep \'\\r\\n\' >>> os.pathsep \';\' >>> os.name \'nt\'
p os.environ 获取系统环境变量
1 >>> os.environ 2 environ({\'ACTEL_FOR_ALTIUM_OVERRIDE\': \' \', \'ALLUSERSPROFILE\': \'C:\\\\ProgramData\', \'ALTERA_FOR_ALTIUM_OVERRIDE\': \' \', \'ALTIUMPATH\': \'C:\\\\Program Files (x86)\\\\Altium2004 SP2\\\\System\', \'APPDATA\': \'C:\\\\Users\\\\miraacle\\\\AppData\\\\Roaming\', 3 \'CM2015DIR\': \'C:\\\\Program Files (x86)\\\\Common Files\\\\Autodesk Shared\\\\Materials\\\\\', \'COMMONPROGRAMFILES\': 4 \'C:\\\\Program Files (x86)\\\\Common Files\', \'COMMONPROGRAMFILES(X86)\': \'C:\\\\Program Files (x86)\\\\Common Files\', 5 \'COMMONPROGRAMW6432\': \'C:\\\\Program Files\\\\Common Files\', \'COMPUTERNAME\': 以上是关于D05——C语言基础学PYTHON的主要内容,如果未能解决你的问题,请参考以下文章