其他分享
首页 > 其他分享> > Day014 - 常用系统模块

Day014 - 常用系统模块

作者:互联网

os模块常用函数

os.getcwd() - 获取当前工作目录

os.listdir(文件夹路径) - 获取指定文件夹所有文件的名称

os.path.abspath(’./’) - 获取指定相对路径的绝对路径

import os

print(os.getcwd())

print(os.listdir('./'))

print(os.path.abspath('./'))

time模块

时间戳

time.time()

print(time.time())  # 获取当前时间,返回值为时间戳

time.localtime()

time.localtime(时间戳)

print(time.localtime())
print(time.localtime(1627612746.222818))
# time.struct_time(tm_year=2021, tm_mon=7, tm_mday=30, tm_hour=10, tm_min=39, tm_sec=6, tm_wday=4, tm_yday=211, tm_isdst=0)

time.sleep()

time.sleep(0)

time.strftime()

%Y%m%d%H%I%M%S
时(24制式)时(12制式)
t1 = time.localtime()
result = time.strftime('%z %Y-%m-%d %H:%M:%S', t1)
print(result)  # +0800 2021-07-30 11:06:08

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

t2 = '2020-10-20'
result = time.strptime(t2, '%Y-%m-%d')
print(f'周{result.tm_wday + 1}')  # 周2

将字符串时间转换成时间戳(先将字符串时间转换成结构体时间)

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

datetime模块

datetime.datetime类

创建datetime时间对象

t1 = datetime.datetime(2018, 10, 10, 14, 23, 45)
print(t1)  # 2018-10-10 14:23:45

获取时间属性

print(t1.year, t1.minute)  # 2018 23

获取当前时间

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

将时间对象转换成结构体时间

t3 = t2.timetuple()
print(t3)  # time.struct_time(tm_year=2021, tm_mon=7, tm_mday=30, tm_hour=11, tm_min=40, tm_sec=8, tm_wday=4, tm_yday=211, tm_isdst=-1)

将时间对象转换成字符串时间

t4 = t2.strftime('%Y-%m-%d %H:%M:%S')
print(t4, type(t4))  # 2021-07-30 11:42:31 <class 'str'>

将字符串时间转换成时间对象

t5 = datetime.datetime.strptime(t4, '%Y-%m-%d %H:%M:%S')
print(t5, type(t5))  # 2021-07-30 11:47:59 <class 'datetime.datetime'>

datetime.timedelta类

t1 = '2020-01-01 00:00:00'
t2 = datetime.datetime.strptime(t1, '%Y-%m-%d %H:%M:%S')
print(t2, type(t2))  # 2020-01-01 00:00:00 <class 'datetime.datetime'>

t3 = t2 + datetime.timedelta(days=10)  # 增加10天
print(t3)  # 2020-01-11 00:00:00

t4 = t3 + datetime.timedelta(weeks=1)  # 增加一周时间
print(t4)  # 2020-01-18 00:00:00

hashlib

使用hashlib产生数据对象

# hashlib.算法名()
hash1 = hashlib.md5()
# hash对象.update(二进制数据)
pw = '123456'
hash1.update(pw.encode())
result = hash1.hexdigest()
print(result)  # e10adc3949ba59abbe56e057f20f883e
hash2 = hashlib.sha256()
ssh = '123456'
hash2.update(ssh.encode())
result = hash2.hexdigest()
print(result)

Python二进制数据类型 - bytes

字符串和bytes相互转换

  1. str -> bytes
# 字符串转二进制
print(bytes('abc', 'utf-8'))  # b'abc'
b1 = b'abc'
print(b1, type(b1))  # b'abc' <class 'bytes'>
  1. bytes -> str
# 二进制转字符串
print(str(b1, 'utf-8'))  # abc
print(b1.decode())  # abc

文件操作

数据存储

文件操作(文件内容的读写)

文件操作基本步骤

打开文件

# 参数1:路径
licenses = open(r'D:\StudyExperience\Python Data Analysis\01语言基础\Day14 - 常用系统模块\licenses.txt')
licenses = open('./licenses.txt')
licenses = open('../Day14 - 常用系统模块/licenses.txt')

# 参数2:读写模式
# r -   只读
licenses = open('./licenses.txt', 'r')
licenses.read()
# licenses.write('abc')  # io.UnsupportedOperation: not writable

# w -   只写;会清空
licenses = open('./licenses.txt', 'w')
licenses.write('abc')
# licenses.read()  # io.UnsupportedOperation: not readable

# a -   只写;保留源文件并追加
licenses = open('./licenses.txt', 'a')
# licenses.read()  # io.UnsupportedOperation: not readable
licenses.write('abc')

# t -   读写数据的类型是字符串
licenses = open('./licenses.txt', 'rt')
result = licenses.read()
print(type(result))  # <class 'str'>

# b -   读写数据的类型是二进制
licenses = open('./licenses.txt', 'rb')
result = licenses.read()
print(type(result))  # <class 'bytes'>

licenses = open('./licenses.txt', 'ab')
# licenses.write('abc')  # TypeError: a bytes-like object is required, not 'str'
licenses.write(b'abc')

读写文件

文件对象.read()

文件对象.write()

关闭文件

文件对象.close()

数据持久化

数据持久化的基本步骤

  1. 确定需要持久化的数据(确定哪个数据在下一次运行程序需要使用);
  2. 创建文件保存数据初始值;
  3. 在程序中需要这个数据的时候从文件里读取;
  4. 如果数据发生改变,要将最新的数据写回文件;
# 写一个程序,打印程序运行次数
conf = open('./file/config.txt', 'rt', encoding='utf-8')
count = int(conf.read())
count += 1
print(count)

conf = open('./file/config.txt', 'w', encoding='utf-8')
conf.write(str(count))
# 练习:添加学生,并且在添加文成后显示所有学生信息(只需要学生姓名)

while True:
    stu = open('./file/stu.txt', 'rt', encoding='utf-8')
    num = str(stu.read())
    print(num)
    in_put = input('请输入姓名:')
    if in_put == 'q':
        break
    stu = open('./file/stu.txt', 'at', encoding='utf-8')
    stu.write(f' {in_put}')
# 在上题的基础上将学生姓名打印成列表
while True:
    in_put = input('请输入姓名:')
    if in_put == 'q':
        break
    stu = open('./file/stu.txt', encoding='utf-8')
    num = eval(stu.read())
    num.append(in_put)
    print(num)

    stu = open('./file/stu.txt', 'w', encoding='utf-8')
    stu.write(str(num))

标签:文件,常用,datetime,licenses,tm,模块,time,print,Day014
来源: https://blog.csdn.net/qq_20814305/article/details/119257059