模块
一.模块:用一个或者多个.py文件来实现某个功能的代码集合,提供了代码的重用性和代码间的耦合。
而对于一个复杂的功能而言,可能需要多个函数相互调用才能完成,函数也可以在不同的.py文件
中,这n个.py文件的代码集合就称为模块
二.模块与库的关系:一个库可能包含了很多的模块,但一个库至少有一个模块
模块的种类:
- 内置模块:类似于sys,os,getpass,socket,time....
- 自定义模块:
- 第三方模块
三.导入自定义模块的方法与注意事项:
注意事项1:尽量避免使用IDE添加的模块搜索路径
对于相同的代码。在缺少pycharm的编辑环境下,就无法识别模块‘mokuai2‘
注意事项2: 程序的模块搜索顺序
注意事项3:导入方法
注意事项4: 添加新的模块搜索路径
四.python的内置模块
1.sys:用于提供对Python解释器相关的操作:
sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称 sys.stdin 输入相关 sys.stdout 输出相关 sys.stderror 错误相关
1.sys.argv:获取用户的输入
2.写用户的输入,根据用户输入,创建一个相应的目录
import os import sys os.mkdir(sys.argv[1]) testFile = input("Enter a file name:") os.mkdir(testFile)
3.sys.stdout():百分比进度条
# 做进度条 往显示器上打印东西 标准输出 import sys import time for i in range(30): sys.stdout.write(‘\r‘) # 每一次清空原行 sys.stdout.write(‘%s%% %s‘ % (int((i+1)/30*100), i*‘*‘)) ‘‘‘ 要输出%,需要转义,转义方法是%% ‘‘‘ sys.stdout.flush() # 清空缓冲区 time.sleep(0.3)
2.时间相关的操作,时间有三种表示方式:
- 时间戳 1970年1月1日之后的秒,即:time.time()
- 格式化的字符串 2014-11-11 11:11, 即:time.strftime(‘%Y-%m-%d‘)
- 结构化时间 元组包含了:年、日、星期等... time.struct_time 即:time.localtime()
import time time.sleep(5) ‘‘‘ 程序停止5秒 ‘‘‘ print(time.time()) ‘‘‘ 时间戳:1495539499.9574285 ‘‘‘ print(time.ctime()) # 字符串格式 ‘‘‘ Tue May 23 19:38:19 2017 ‘‘‘ print(time.ctime(time.time()-86400)) # 减去一天的秒数,将时间戳转换成字符串时间 ‘‘‘ Mon May 22 19:38:19 2017 ‘‘‘ # 将时间戳转换成时间对象格式 time_obj = time.gmtime(time.time()) print(time_obj) ‘‘‘ time.struct_time(tm_year=2017, tm_mon=5, tm_mday=23, tm_hour=11, tm_min=38, tm_sec=19, tm_wday=1, tm_yday=143, tm_isdst=0) ‘‘‘ print(time_obj.tm_year) ‘‘‘ 2017 ‘‘‘ print(str(time_obj.tm_year) + ‘-‘ + str(time_obj.tm_mon) + ‘-‘ + str(time_obj.tm_mday)) ‘‘‘ 2017-5-23 ‘‘‘ # 字符串格式化 print("%s-%s-%s %s:%s" % (time_obj.tm_year, time_obj.tm_mon, time_obj.tm_mday, time_obj.tm_hour, time_obj.tm_min)) ‘‘‘ 2017-5-23 11:38 ‘‘‘ print("%d-%f-%d %d:%d" % (time_obj.tm_year, time_obj.tm_mon, time_obj.tm_mday, time_obj.tm_hour, time_obj.tm_min)) ‘‘‘ 2017-5.000000-23 11:38 %d只能接收整型数剧,但是%s都可以各种类型的数据 ‘‘‘ # 本地时间 输出一个时间对象 print(time.localtime(time.time())) ‘‘‘ time.struct_time(tm_year=2017, tm_mon=5, tm_mday=23, tm_hour=19, tm_min=38, tm_sec=19, tm_wday=1, tm_yday=143, tm_isdst=0) ‘‘‘ # 将时间对象转换成时间戳 print(time.mktime(time.localtime())) ‘‘‘ 1495539499.0 ‘‘‘ # 将时间对象格式转换成指定的字符串格式 print(time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())) ‘‘‘ 2017-05-23 11:38:19 ‘‘‘ print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) ‘‘‘ 2017-05-23 19:38:19 ‘‘‘ # 将字符串格式转换成时间对象格式 print(time.strptime("2016-01-28", "%Y-%m-%d")) ‘‘‘ time.struct_time(tm_year=2016, tm_mon=1, tm_mday=28, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=28, tm_isdst=-1) ‘‘‘ import datetime print(datetime.date.today()) ‘‘‘ 2017-05-23 ‘‘‘ print(datetime.date.fromtimestamp(time.time()-664000000)) ‘‘‘ 1996-05-08 ‘‘‘ current_time = datetime.datetime.now() print(current_time) ‘‘‘ 2017-05-23 19:38:20.001431 ‘‘‘ print(current_time.timetuple()) # 返回时间对象格式 ‘‘‘ time.struct_time(tm_year=2017, tm_mon=5, tm_mday=23, tm_hour=19, tm_min=38, tm_sec=20, tm_wday=1, tm_yday=143, tm_isdst=-1) ‘‘‘ print(current_time.replace(2014, 12, 12))# 输出当前时间,指定值被替换 ‘‘‘ 2014-12-12 19:38:20.001431 ‘‘‘ str_to_date = datetime.datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M")#将字符串转换成日期的字符串格式 print(str_to_date) ‘‘‘ 2006-11-21 16:30:00 ‘‘‘ # 时间的加减 用得很多 new_date0 = datetime.datetime.now() + datetime.timedelta(days=-10) #减10天 ‘‘‘ ‘‘‘ new_date1 = datetime.datetime.now() + datetime.timedelta(hours=-10) #减10个小时 ‘‘‘ ‘‘‘ new_date2 = datetime.datetime.now() + datetime.timedelta(seconds=-10) # 减10秒 ‘‘‘ ‘‘‘
时间: 2024-09-29 16:33:28