python编程语言-L3

内置库 os

os 常用方法

  • 系统相关
  • 操作目录
  • 操作路径

os 操作系统相关

  • os.name:获取系统名称
  • os.environ:获取系统环境变量信息
  • os.getenv(‘PATH’):获取指定名称的环境变量信息
  • os.system():执行系统指令
import os

# os.name:获取系统名称 nt代表window,posix代表linux
print(os.name)

# os.environ:获取系统环境变量信息
print(os.environ)

# os.getenv('PATH'):获取指定名称的环境变量信息
print(os.getenv('PATH'))

# os.system():执行系统指令
os.system('pwd')  # linux系统
print(os.system('dir'))  # windows系统

os 目录相关

  • os.getcwd():获取当前目录
  • os.chdir():切换目录
  • os.listdir():列出当前目录内容
  • os.mkdir():创建空目录
  • os.makedirs():递归创建多级目录
  • os.rmdir():删除空目录
  • os.rename():重命名目录
  • os.remove():删除文件
"""目录相关"""
import os
# 获取当前所在目录 get current directory
print(os.getcwd())
# 切换目录 change directory
os.chdir('..')
# 列出当前目录下的所有文件
print(os.listdir())
# 创建空目录
os.mkdir('new')
# 递归创建多级空目录
os.makedirs('a/b/c')
# 删除空目录
os.rmdir('new')
# 重命名目录
os.rename('a', 'a1')
# 删除文件
os.remove('demo.txt')

os 路径相关

path 方法 说明
os.path.abspath(path) 返回绝对路径
os.path.basename(path) 返回文件名
os.path.dirname(path) 返回文件路径
os.path.split(path) 分割路径
os.path.join(path) 拼接路径
os.path.exists(path) 判断路径是否存在
os.path.isdir(path) 判断是否是目录
os.path.isfile(path) 判断是否是文件
os.path.getsize(path) 获取文件大小

os 路径用法实例

# os 路径用法实例
# 返回绝对路径
import os
print(os.path.abspath("./os_demo.py"))
# 返回文件名
print(os.path.basename("/Users/xiaofo/coding/pythonProject/course/os_demo.py"))
# 返回文件路径
print(os.path.dirname("/Users/xiaofo/coding/pythonProject/course/os_demo.py"))
# 分割路径
print(os.path.split("/Users/xiaofo/coding/pythonProject/course/os_demo.py"))
# 拼接路径
print(os.path.join("/Users/xiaofo/coding/pythonProject/course", "os_demo.py"))
# 判断路径是否存在
print(os.path.exists("/Users/xiaofo/coding/pythonProject/course/os_demo.py"))
print(os.path.exists("./os_demo.py"))
# 判断是否是目录
print(os.path.isdir("../demos"))
# 判断是否是文件
print(os.path.isfile("./hello.py"))
# 获取文件大小
print(os.path.getsize("/Users/xiaofo/coding/pythonProject/course/os_demo.py"))

内置库 sys

sys 概述

  • 是 Python 自带的内置模块
  • 是与 Python 解释器交互的桥梁

sys 使用

  • 常用属性
  • 常用方法
  • 导入 sys 模块
# 导入sys模块
import sys

# 查看sys模块帮助文档
help(sys)

# 查看sys模块的属性和方法
print(dir(sys))

sys 常用属性

  • sys.version:返回 Python 解释器版本
  • sys.platform:返回操作系统平台名称
  • sys.argv:返回外部向程序传递的参数
  • sys.modules:返回已导入的模块信息
  • sys.path:返回导包的搜索路径列表
"""sys模块常用属性"""
import sys
# 返回Python 解释器版本
print(sys.version)
# 返回操作系统平台名称
print(sys.platform)
# 返回外部向程序传递的参数
print(sys.argv)
# 返回已导入的模块信息
print(sys.modules)
print(sys.modules.keys())
# 返回导包的搜索路径列表
print(sys.path)

sys 常用方法

  • sys.getdefaultencoding():获取编码方式
  • sys.exit():运行时退出
"""sys模块常用方法"""
import sys
# 获取系统当前编码
print(sys.getdefaultencoding()) #打印 utf-8

# 运行时退出
sys.exit()

Python 内置库 - 文件处理

文件操作步骤

  • 打开文件
  • 操作文件:读/写内容
  • 关闭文件(读写完成,要及时的关闭)

open 方法

def open(file, mode='r', buffering=None, 
encoding=None, errors=None, newline=None, 
closefd=True):

文件读写模式

实战1

# 第一步:(以只读模式)打开文件
f = open('data.txt', 'r', encoding='utf-8')  

# 第二步:读取文件内容
print(f.read())
 
# 第三步:关闭文件
f.close()

读操作

忘记关闭文件的危害

  • 打开文件达到一定数量, 将会导致打开失败
  • 占用内存空间,非常浪费资源
  • 会导致系统自动回收资源,而丢失数据

with 用法

with open('data.txt', 'r', encoding='utf-8') as f:
    print(f.read()) 
print(f.closed)   ## 查看关闭状态  打印True

总结

  • 使用 with 方法,会自动完成关闭操作
  • 通过 python 封装的 API,可以实现读,写,追加操作
  • 文件打开要使用utf-8的编码格式(以免中文出现乱码)

Python 内置库 - 科学计算

math 函数操作

  • 数字常数
  • 数论与表示函数
  • 幂对数函数
  • 三角对数函数
  • 高等特殊函数

数字常量

常数 数学表示 描述
math.pi π 圆周率,值为3.1415926535…
math.e e 自然对数,值为2.7182818…
math.inf 正无穷大,负无穷-math.inf
math.nan NAN 非数字 NAN(Not a Number)

Python 日期与时间处理

工作中应用

  • 作为日志信息的内容输出
  • 计算某个功能的执行时间
  • 用日期命名一个日志文件的名称
  • 生成随机数(时间是不会重复的)

python 中处理时间的模块

  • time
  • datetime
  • calendar

常见的时间表示形式

  • 时间戳
  • 格式化的时间字符串

datetime 常用的类

  • datetime (from datetime import datetime) 时间日期相关
  • timedelta (from datetime import timedelta) 计算两个时间的时间差
  • timezone (from datetime import timezone) 时区相关

练习1 - 获取当前日期和时间

import datetime
now = datetime.datetime.now()
print(now)

练习2 - 字符串与时间互转

import datetime
s="2021-09-27 06:47:06"
# 将字符串 转换为datetime实例
s1=datetime.datetime.strptime(s,'%Y-%m-%d %H:%M:%S') #2021-09-27 06:47:06
print(s1)

# 时间转成字符串
now = datetime.datetime.now()
result = now.strftime('%a, %b %d %H:%M')
print(result) #Sat, Apr 22 15:05

# 参考链接:https://docs.python.org/3/library/datetime.html?highlight=strftime

练习3 - 时间戳 与时间互转

import datetime
mtimestamp = 1632725226.129461
# 将时间戳转成时间
s = datetime.datetime.fromtimestamp(mtimestamp)
print(s) #2021-09-27 14:47:06.129461
# 将时间转成时间戳
print(s.timestamp()) #1632725226.129461

内置库 json

  • SON 是用于存储和交换数据的语法,是一种轻量级的数据交换格式。

  • 使用场景

    • 接口数据传输
    • 序列化
    • 配置文件
  • 键值对形式

  • 数组形式

{
    "language": [
        {
            "name": "python",
            "url": "https://www.python.org/"
        },
        {
            "name": "java",
            "url": "https://www.java.com/zh-CN/"
        }
    ]
}

Python 与 JSON 数据类型对应

json 库

  • 可以从字符串或文件中解析 JSON
  • 该库解析 JSON 后将其转为 Python 字典或者列表

常用方法

  • dumps():将 Python 对象编码成 JSON 字符串
  • loads():解码 JSON 数据,该函数返回 Python 对象
  • dump(): Python 对象编码,并将数据写入 json 文件中
  • load():从 json 文件中读取数据并解码为 Python 对象
import json

# 定义 python 结构
data = [{'a': 1, 'b': '2', 'c': True, 'd': False, 'e': None }]

# 将 python 对象编码为 JSON 字符串
json_data = json.dumps(data)
print(json_data) #[{"a": 1, "b": "2", "c": true, "d": false, "e": null}]
# 将 JSON 字符串解码为 python 对象
python_data = json.loads(json_data)
print(python_data) #[{'a': 1, 'b': '2', 'c': True, 'd': False, 'e': None}]
# 写入 JSON 数据,在代码当前目录生成一个 data.json 的文件
with open('data.json', 'w') as f:
     json.dump(data, f)
# 读取数据,读取 json 文件并解码成 python 对象
with open('data.json', 'r') as f:
     data = json.load(f)
     print(data) #打印:[{'a': 1, 'b': '2', 'c': True, 'd': False, 'e': None}]

dumps 常用参数

  • indent:根据数据格式缩进显示,默认为 None,没有缩进
  • ensure_ascii:对中文使用 ASCII 编码,默认为 True
import json

data = {
    'a': 1,
    'b': '霍格沃兹',
    'c': True,
    'd': False,
    'e': None }

python_data = json.dumps(data, indent=4, ensure_ascii=False)
print(python_data)
#打印结果
# {
#     "a": 1,
#     "b": "霍格沃兹",
#     "c": true,
#     "d": false,
#     "e": null
# }