Python模块之time 与 __init__.py

在学模块这之前,先来了解一下以下内容

1、首先补充 __init__.py

      在python模块的每一个包中,都有一个__init__.py文件(这个文件定义了包的属性和方法)然后是一些模块文件和子目录,假如子目录中也有__init__.py 那么它就是这个包的子包了。当你将一个包作为模块导入(比如从 xml 导入 dom )的时候,实际上导入了它的__init__.py 文件。

      一个包是一个带有特殊文件 __init__.py 的目录。__init__.py 文件定义了包的属性和方法。其实它可以什么也不定义;可以只是一个空文件,但是必须存在。如果 __init__.py 不存在,这个目录就仅仅是一个目录,而不是一个包,它就不能被导入或者包含其它的模块和嵌套包。

      __init__.py 中还有一个重要的变量,叫做__all__。我们有时会使出一招“全部导入”。这时 import 就会把注册在包__init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中来。

 2、Python查找模块的路径

       运行Python应用或引用Python模块,Python解释器要有一个查找的过程。可以通过设置一个环境变量PYTHONPATH为Python增加一个搜索路径,以方便查找到相关Python模块,这与众多应用程序需要设置一个系统环境变量的道理是一样的。在命令行中可以通过以下命令设置:

C:\Users\Administrator>set PYTHONPATH=E:/Project/Python/ModuleAndPackage/

进入Python环境后可以,通过Python的sys.path属性获得当前搜索路径的配置,可以看到之前我们设置的路径已经在当前搜索路径中了。

也可以通过sys模块的append方法在Python环境中增加搜索路径。

例:

import sys
for i in sys.path :
   print(i)


输出为:
/home/chang/桌面/py/测试
/home/chang/桌面/py
/usr/lib/python36.zip
/usr/lib/python3.6
/usr/lib/python3.6/lib-dynload
/usr/local/lib/python3.6/dist-packages
/usr/lib/python3/dist-packages

3、Python中的模块和包

        每个.py文件都是可以认为是一个Python模块,.py文件中可以包含类、方法、变量和常量(Python还没有严格意义上的常量,只是约定大写的变量作为常量),文件内也可以直接写所有的逻辑语句并在加载时从上之下直接执行,这与其他解释型语言是类似的。

        引用一个模块,就要建立运行它的上下文环境。我们先设置一个环境变量PYTHONPATH,以便Python解释器找到.py模块,然后import 模块名字,即可访问其中的方法或变量。或者使用from关键字直接导入模块内的属性或方法

一、 time模块

表示时间我们通常用三种形式:

  • 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
  • 格式化的时间字符串(Format String)
  • 结构化的时间(struct_time):struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)
import time
print(time.time())
print(time.strftime("%Y-%m-%d %X"))
print(time.localtime())
print(time.gmtime()) 

结果为:
1534739053.4532516     时间戳,系统的时间,单位秒(从1970/1/1开始)
2018-08-20 12:24:13    格式化的时间字符串
time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20, tm_hour=12, tm_min=24, tm_sec=13, tm_wday=0, tm_yday=232, tm_isdst=0)
time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20, tm_hour=4, tm_min=24, tm_sec=13, tm_wday=0, tm_yday=232, tm_isdst=0)

三者的转换关系:

计算机认识的时间只能是'时间戳'格式,而程序员可处理的或者说人类能看懂的时间有: '格式化的时间字符串','结构化的时间'。

复制代码

#将结构化的时间转换为格式化的字符串时间
print(time.strftime("%Y-%m-%d %X", time.localtime()))
#将结构化的时间转换为时间戳
print(time.mktime(time.localtime()))
#将时间戳转换为结构化的时间
print(time.localtime(1498025310))
#将格式化的字符串时间转换为结构化的时间
print(time.strptime("2017-06-21 16:55:36", "%Y-%m-%d %X"))

  

#将结构化的时间转换为字符串时间
print(time.asctime(time.localtime()))
print(time.asctime()) #如果没有参数,将会将time.localtime()作为参数传入。
print('------------------------------')
#将时间戳转换为字符串时间
print(time.ctime(time.time()))
print(time.ctime()) #如果没有参数,将会将time.time()作为参数传入。

猜你喜欢

转载自blog.csdn.net/qq_40674583/article/details/81869107