Python基础(六)—— 模块、datetime、文件系统

Python基础(六)

大家可以关注知乎或微信公众号的‘share16’,我们也会同步更新此文章。

十四、模块

14.1 模块的定义

   模块是一个包含所有你定义的函数和变量的文件,其后缀名是 .py;模块可以被别的程序引入,以使用该模块中的函数等功能,这也是使用 Python 标准库的方法。

命名空间因为对象的不同,也有所区别,可以分为如下几种:

  • 内置命名空间(Built-in Namespaces): Python 运行起来,它们就存在了;内置函数的命名空间都属于内置命名空间,所以我们可以在任何程序中直接运行它们,比如 id() ,不需要做什么操作,拿过来就直接使用了;
  • 全局命名空间(Module:Global Namespaces): 每个模块创建它自己所拥有的全局命名空间,不同模块的全局命名空 间彼此独立,不同模块中相同名称的命名空间,也会因为模块的不同而不相互干扰;
  • 本地命名空间(Function & Class:Local Namespaces): 模块中有函数或者类,每个函数或者类所定义的命名空间就 是本地命名空间。如果函数返回了结果或者抛出异常,则本地命名空间也结束了;

程序在查询上述三种命名空间的时候,就按从里到外的顺序,即:Local Namespaces ➔ Global Namesspaces ➔ Built-in Namesspaces。

14.2 导入模块

import 模块名1[, 模块名2[, ... 模块名n]]

import 模块名 as 新名字

from 模块名 import 函数名1[, 函数名2[, ... 函数名n]]

查看模块内所有方法:

''' dir()函数:
  不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表;  如果参数包含方法__dir__(),该方法将被调用;如果参数不包含__dir__(),该方法将最大限度地收集参数信息;
'''

dir(datetime)
help(datetime)
datetime.__all__


14.3 __name__属性

   对于很多编程语言来说,程序都必须要有一个入口,而 Python 则不同,它属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,而是动态的逐行解释运行。也就是从脚本第一行开始运行,没有统一的入口

   __name__:是内置变量,可用于表示当前模块的名字。

  • 当 .py 文件直接运行时, if __name__ == '__main__' 之下的代码块将被运行
  • 当 .py 文件以模块形式被导入时, if __name__ == '__main__' 之下的代码块不被运行

14.4 搜索路径

   我们使用 import 语句的时候,Python 解释器是怎样找到对应的文件的呢?

  • 搜索路径是由一系列目录名组成的;
  • 搜索路径是在 Python 编译或安装的时候确定的,安装新的库应该也会修改;
  • 搜索路径被存储在 sys 模块中的 path 变量中;
import sys
print(sys.path)
# 返回一个列表,其中一项是空串'',代表当前目录

14.5 包(package)

   包是一种管理 Python 模块命名空间的形式,采用"点模块名称"。

创建包分为三个步骤:

  • 创建一个文件夹,用于存放相关的模块,文件夹的名字即包的名字;
  • 在文件夹中创建一个 __init__.py 的模块文件,内容可以为空;
  • 将相关的模块放入文件夹中。

十五、datetime模块

   datetime 是 Python 中处理日期的标准模块,常用的 4 种对日期和时间进行处理的类:datetime、date、time 和 timedelta。

15.1 datetime类

   datetime模块:包含一个datetime类;

  • 通过 from datetime import datetime 导入的,才是 datetime 这个类;
  • 若仅导入 import datetime ,则必须引用全名 datetime.datetime ;
from datetime import datetime

''' 获取 指定的 日期时间 '''
print(datetime(2022, 4, 13, 10, 54, 46, 689472))
# >> 2022-04-13 10:54:46.689472

''' 获取 当前的 日期时间 '''
print(datetime.now(), type(datetime.now()), sep=',  ')
datetime.now()
# >> 2022-04-13 10:54:46.689187,  <class 'datetime.datetime'>
# >> datetime.datetime(2022, 4, 13, 10, 54, 46, 689472)

''' 将 日期时间 转换成 时间戳 '''
datetime.now().timestamp()
datetime(2022, 4, 13, 10, 54, 46, 689472).timestamp()
# >> 1649859435.124962
# >> 1649818486.689472

''' 将 时间戳 转换成 日期时间 '''
print(datetime.fromtimestamp(1649818486.689472))
datetime.fromtimestamp(1649818486.689472)
# >> 2022-04-13 10:54:46.689472
# >> datetime.datetime(2022, 4, 13, 10, 54, 46, 689472)

''' 返回 最大的 日期时间'''
datetime.max
# >> datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)

''' 返回 最小的 日期时间'''
datetime.min
# >> datetime.datetime(1, 1, 1, 0, 0)


''' 根据date和time,创建一个datetime对象 '''
import datetime
print(datetime.datetime.combine(datetime.date(2000,1,1), datetime.time(9,9,9)))
# >> 2000-01-01 09:09:09

在这里插入图片描述

15.2 date类

   datetime模块:包含一个date类;

  • 通过 from datetime import date 导入的,才是 date 这个类;
  • 若仅导入 import datetime ,则必须引用全名 datetime.date ;
from datetime import date

''' 获取当前日期 '''
t = date.today()
print(t, type(t))
# >> 2022-04-14 <class 'datetime.date'>

''' 返回最小单位 '''
t.resolution
# >> datetime.timedelta(days=1)

''' 判断2个日期是否相等 '''
t.__eq__(date(2022,4,10))
# >> False

在这里插入图片描述

15.3 time类

   datetime模块:包含一个time类;

  • 通过 from datetime import time 导入的,才是 time 这个类;
  • 若仅导入 import datetime ,则必须引用全名 datetime.time ;

1秒 = 1000 毫秒(milliseconds)
1毫秒 = 1000 微妙(microseconds) 在这里插入图片描述

15.4 timedelta类

   timedelta:表示具体时间实例中的一段时间,可以把它想象成两个日期或时间之间的间隔;常被用来从 datetime 对象中添加或移除一段特定的时间。

'''
import datetime
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
'''

import datetime
import calendar
#  今天、本月天数
t0 = datetime.date.today()
days_month0 =calendar.monthrange(t0.year, t0.month)[1]

#  昨天
t1 = t0 + datetime.timedelta(days = -1)
t2 = t0 - datetime.timedelta(days = 1)

#  明天
t3 = t0 + datetime.timedelta(days = 1)

# 月初、月末
t4 = t0 - datetime.timedelta(days = (t0.day-1))
t5 = t0 + datetime.timedelta(days = (days_month0 - t0.day))

print('今天的日期是:{};\n\
昨天的日期是:{};\n\
明天的日期是:{};\n\
月初的日期是:{};\n\
月末的日期是:{};\n'.format(t0, t1, t3, t4, t5), sep=',  ')


''' 运行结果:
今天的日期是:2022-04-14;
昨天的日期是:2022-04-13;
明天的日期是:2022-04-15;
月初的日期是:2022-04-01;
月末的日期是:2022-04-30;
'''


十六、文件与文件系统

    文件系统: 相关链接

16.1 打开文件

查看电脑中文件的编码方式

import chardet
f = open('文件路径', 'rb')    # 以二进制模式读取文件
data =f.read()              # 获取文件内容
print(chardet.detect(data)) # 检测文件内容
# >> {'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}

打开文件:open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

'''
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
'''

f = open('Desktop/xxxx.txt', encoding='GB2312', errors='ignore')
for i in f:
    print(i)
f.close()

在这里插入图片描述

16.2 文件对象方法

   file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:
在这里插入图片描述

16.3 OS模块常用函数

   OS模块常用函数: 相关链接

谢谢大家🌹

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值