IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python常用系统模块和文件操作 -> 正文阅读

[Python知识库]Python常用系统模块和文件操作

Python常用系统模块和文件操作

1. time模块

时间戳
用指定时间到1970年1月1日0时0分0秒(格林威治时间)的时间差(单位是秒)来表示时间的方式就是时间戳

注:格林威治时间和北京时间有8小时的时差

4个字节(时间戳存储时间)

1) time.time() - 获取当前时间

print(time.time())  # 1627611769.17706 时间戳

2) time.localtime - 获取当前时间的本地时间,返回结构体时间

? time.localtime(时间戳) - 将时间戳对应的时间转换成本地时间

t1 = time.localtime()
print(t1.tm_year,t1.tm_mon,t1.tm_mday)
print(time.localtime(1627611769.17706))

3) time.strftime(时间格式,结构时间) - 结构体时间转字符串时间

"""
%Y  -   年
%m  -   月
%d  -   日   
%H  -   时(24小时制)
%I  -   时(12小时制)
%M  -   分
%S  -   秒
%p  -   AM、PM(上午、下午) 
%a  -   星期英文单词缩写
%A  -   星期英文单词全拼
%b  -   月份英文单词缩写
%B  -   月份英文单词全拼
"""
result = time.strftime('%Y年%m月%d日 %H:%M:%S', t1)
print(result)
  • 时间格式化如果遇到中文报错

    import locale
    locale. setlocale(locale.LC_ALL, 'en')
    locale. setlocale(locale.LC_CTYPE, ' chinese' )
    

4) 将字符串时间转换成结构体时间

  • time.strptime(字符串时间, 时间格式)

    t2 = time.strptime('2021-05-1', '%Y-%m-%d')
    print(f'周{t2.tm_wday+1}')
    print(t2)
    

5) 将结构体时间转换成时间戳

  • time.mktime(结构体时间)

    result = time.mktime(t2)
    print(result)
    

6)time.sleep(时间) - 程序休眠指定时间,单位秒

time.sleep(2)
print('=======')

2. datetime模块

  • datetime - 处理包含年月日时分秒的时间

1)创建datetime时间对象

? datetime(年, 月, 日, hour=0, minute=0, second=0)

from datetime import datetime, timedelta
t1 = datetime(2020,5,20)
print(t1)

2)获取时间属性

? 时间对象.year、时间对象.month、…

print(t1.year)

3)获取当前时间

t2 = datetime.now()
print(t2)  # 2021-07-30 11:37:35.210646

4)将datetime转换成结构体时间

t4 = t3.timetuple()
print(t4)

5)将datetime转换成字符串时间

st5 = t3.strftime('%Y年%m月%d日')
print(st5)

6)将字符串时间转换成datetime

str6 = '2003-7-1'
t5 = datetime.strptime(str6, '%Y-%m-%d')
print(t5)
  • timedelta - 主要用于时间的加减操作
t6 = datetime.now() + timedelta(days=45)
print(t6)   # 2021-09-13 11:49:08.433296

t7 = datetime.now() + timedelta(days=23, hours=34, minutes=23)
print(t7)  # 2021-08-23 22:16:55.145695

3. hashlib模块

hashlib模块 - 用于生成数据的hash摘要

hash加密算法主要是有**:md5** 和 shaxxx

3.1 hash加密的特点:

a.不可逆(通过原数据加密后(产生的摘要)无法还原)
b.相同的数据通过相同的算法产生摘要(密文)是一样的
c.不同大小的数据在使用相同的算法产生的摘要的长度一致

3.2 使用hashlib产生数据的摘要

①根据算法创建hash对象

? hashlib.算法名()

hash = hashlib.md5()      

②添加数据

? hash对象.update(二进制数据)

pw = '12345'
hash1.update(pw.encode())

③获取摘要

result = hash1.hexdigest()
print(result)
3.3 python二进制数据类型 - bytes

字符串和bytes的相互转换
1)str -> bytes
方法一:bytes(字符串, ‘utf-8’)

# 字符串转二进制
print(bytes('abc', 'utf-8'))

方法二:b’字符集’

b1 = b'abc'
print(type(b1)) 

方法三:字符串.encode()

str1 = 'sds'
print(str1.encode())

2)bytes -> str
方法一:str(二进制数据, ‘utf-8’)

print(str(b1, 'utf-8'))

方法二:二进制数据.decode()

print(b1.decode())

4. 文件操作

4.1 数据的存储

程序中保存的数据默认都是存储在运行内存中,运行内存中的数据在程序结束的时候都会被释放。
如果希望程序运行过程中产生的数据在程序结束后不被销毁,就需要将数据存储到磁盘中。

  • 将数据存储到磁盘过程叫做数据持久化、数据本地化。
  • 数据持久化的基本原理 - 将数据通过文件存储到磁盘中。
4.2 文件操作(操作文件内容)

文件操作主要解决两个问题:
a.怎么将程序中的数据通过文件存储到磁盘中
b.怎么在程序中使用在文件中的数据

4.3 文件操作基本步骤

第一步:打开文件
open(文件路径, 读写模式, encoding=文件编码方式) - 以指定方式打开指定文件,返回文件对象
1)文件路径 - 文件在计算机中的位置信息,以字符串的形式提供值。
a. 绝对路径:文件在计算机中的全路径
b. 相对路径:. - 表示当前目录
**… ** - 表示当前目录的上层目录

# 参数1:路径
open(r'D:\QFcode\files\test1.py')
open(r'files\test1.py')

2)读写模式 - 设置打开文件后支持的是读操作还是写操作;设置操作数据的类型是字符串还是二进制

"""
第一组值:
r   -   只读
w   -   只写;先清空原文件
a   -   只写;保留原文件内容,在后面追加数据
第二组值:
t   -   数据类型是字符串
b   -   数据类型是bytes
'r' == 'rt' == 'tr'
"""

# 参数2:读写模式
# f = open('test.py', 'r', encoding='utf-8' )
f = open('test.py', 'a', encoding='utf-8' )

注意:如果是文本文件可以用t或者b的方式打开,如果是二进制文件只能以b的方式打开

3)encoding - 文件编码方式(打开的编码方式和文件的编码方式必须一致)
以b的方式打开文件时encoding不能赋值

第二步:读文件、写文件
1)读操作

  • 文件对象.read() - 从读写位置开始读到文件结尾(读写位置默认在文件开头)
  • 文件对象.readline() - 从读写位置开始读到一行的结尾(只有在读文本文件的时候有效)
  • 文件对象.readlines() - 一行一行的读,读完

2)写操作

  • 文件对象.write(数据)

3)补充 - 设置读写位置到文件开头

f.seek(0)
print(f.readline())

第三步:关闭文件

  • 文件对象.close()

5. 数据持久化操作

  • 第一步:确定需要持久化的数据(确定哪个数据在下一次运行程序的时候还要用)
  • 第二步:创建文件保存数据初始值
  • 第三步:在程序中需要这个数据的时候从文件中读数据
  • 第四步:如果数据发生改变,要将最新的数据写回文件中
# 实例演示:添加学生,并且在添加完成后显示所有学生信息(只需要学生名字)
"""
请输入学生姓名: 小明
小明   ['小明']

请输入学生姓名:小花
小明 小花   ['小明', '小花']

请输入学生姓名:q
(程序结束)

请输入学生姓名: 张三
小明 小花 张三   ['小明', '小花', '张三']

请输入学生姓名: 李四
小明 小花 张三 李四    ['小明', '小花', '张三', '李四'] 

请输入学生姓名:q
(程序结束)
"""
# 需求一:只需要添加名字
while True:
    if str == 'q':
        print('程序结束')
        break
    name = input('请输入学生姓名:')
    stu = open('files/students.txt','a',encoding='utf-8')
    stu.write(f'{name} ')

    stu = open('files/students.txt','r',encoding='utf-8')
    print(stu.read())

stu.close()

#需求二:将名字添加到列表
while True:
    if str == 'q':
        print('程序结束')
        break
    name = input('请输入学生姓名:')
    stu = open('files/students2.txt', encoding='utf-8')
    all_student = eval(stu.read())
    all_student.append(name)
    print(all_student)

    stu = open('files/students2.txt','w',encoding='utf-8')
    stu.write(f'{all_student} ')

stu.close()

分享:

import sys

# 选择
def select():
    op_num = (input('请选择1~3:'))
    if op_num == '1':
        login()
    elif op_num == '2':
        register()
    elif op_num == '3':
        print('退出!')
        sys.exit()

# 登录
def login():
    account = input('请输入账号:')
    password = input('请输入密码:')
    user = open('files/user.txt', 'r', encoding='utf-8')
    all_user = eval(user.read())
    if account not in [name['account'] for name in all_user]:
        print('账号输入错误,请注册或者忘记密码!')
        index_ui()
    elif account in [name['account'] for name in all_user] and password in [pw['password'] for pw in all_user]:
        print('登录成功!')
        index_ui()
    else:
        print('登录失败,密码输入错误!')
        login()

# 注册
def register():
    # 注册账号密码
    account = input('请输入账号:')
    password = input('请输入密码:')
    user = open('files/user.txt', 'r', encoding='utf-8')
    all_user = eval(user.read())

    if account not in [name['account'] for name in all_user]:
        all_user.append({'account': account, 'password': password})
        user = open('files/user.txt', 'w', encoding='utf-8')
        user.write(f'{all_user}')
        print('注册成功!')
        index_ui()

    else:
        print('注册失败,该账号已经注册过!')
        index_ui()

# 主页
def index_ui():
    print("===============================")
    print('     **欢迎来到xx管理系统**       ')
    print()
    print('         1.登   录              ')
    print('         2.注   册              ')
    print('         3.退   出              ')
    print()
    print("===============================")
    select()


index_ui()
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-31 16:35:50  更:2021-07-31 16:37:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 13:43:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码