18.python全栈之路:模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了18.python全栈之路:模块相关的知识,希望对你有一定的参考价值。

模块

一.模块:用一个或者多个.py文件来实现某个功能的代码集合,提供了代码的重用性和代码间的耦合。

而对于一个复杂的功能而言,可能需要多个函数相互调用才能完成,函数也可以在不同的.py文件

中,这n个.py文件的代码集合就称为模块

二.模块与库的关系:一个库可能包含了很多的模块,但一个库至少有一个模块

  模块的种类:

  1. 内置模块:类似于sys,os,getpass,socket,time....
  2. 自定义模块:
  3. 第三方模块

三.导入自定义模块的方法与注意事项

注意事项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秒
‘‘‘

‘‘‘

 

以上是关于18.python全栈之路:模块的主要内容,如果未能解决你的问题,请参考以下文章

Python全栈之路模块----之-----守护进程进程锁队列生产者消费者模式

Python全栈之路----常用模块----hashlib加密模块

Python全栈之路----常用模块----sys模块

Python全栈之路----常用模块----logging模块

Python全栈之路----常用模块----subprocess模块

Python全栈之路----常用模块----包及跨模块导入