模块
python中的模块是一个包含事先定义好的函数和变量的文件,其后缀名是.py。 模块可以被别的程序引入,以使用该模块中的函数等功能。
时间模块
from … import 语句
- as 起别名
- * 通配符表示引用模块中所有对象
import time # 模块名
from datetime import datetime
from time import time as tt
import pandas as pd
import numpy as np
#通过模块名调用,它内部的函数或类
print(time.gmtime()) # 获取格式化时间对象,返回值是当前格林尼治时间。
print(time.localtime()) # 获取格式化时间对象,返回值是当地时间(也就是北京时间,比格林尼治时间+8小时)。
print(time.time()) # 获取当前时间戳。 时间戳是指从计算机元年到现在经过的秒数。计算机元年是指1970年1月1日0时0分0秒。
print(time())
print(tt())
print(datetime.now(),type(datetime.now()))
now_datetime = datetime.now()
strs_time = datetime.strftime(now_datetime,'%Y-%m-%d %H:%M:%S')
print(strs_time,type(strs_time))
now_datetime_1 = datetime.strptime(strs_time,'%Y-%m-%d %H:%M:%S')#字符串型
print(now_datetime_1,type(now_datetime))
显示与添加模块路径
import sys
print(sys.path)
sys.path.append("D:\\钉钉")
模块的__name__属性
# 用来保证模块内的函数不被自动执行。
包
包的本质就是一个文件目录. 目录只有包含一个叫做 __init__.py 的文件才会被认作是一个包。 目录中存放了一个或多个.py模块. 在导入一个包的时候,Python 会根据 sys.path 中的目录来寻找这个包和包中含有的子目录。
自定义模块
Python解释器在搜索模块时会查找几个不同的路径。通常,它会查看当前工作目录和Python的site-packages
目录。如果你的模块不在这些路径中,你可能需要修改sys.path
来包含模块的路径,或者使用相对/绝对路径来导入模块。
# my_module.py
def greet(name):
return f"Hello, {name}!"
class MyClass:
def __init__(self, value):
self.value = value
def print_value(self):
print(self.value)
# main.py
import my_module
print(my_module.greet("World")) # 输出 "Hello, World!"
obj = my_module.MyClass(42)
obj.print_value() # 输出 42
#除了使用import语句导入整个模块外,你还可以使用from ... import ...语句来导入模块中的特定函数或类。
# main.py
from my_module import greet, MyClass
print(greet("World")) # 输出 "Hello, World!"
obj = MyClass(42)
obj.print_value() # 输出 42
标准模块
- sys 用于提供对Python解释器相关的操作
- os 用于提供系统级别的操作,关机,删文件,创建文件,调用系统命令
- time/datetime 时间相关的操作
- hashlib 用于加密相关的操作
- random 用于随机数
- re 用于正则表达式
- json 用于Json字符串和 python基本数据类型间进行转换
sys模块常用方法
# system (python解释器)
# sys.path # 查看模块搜索路径以列表显示
# sys.version # 查看当前python版本
# sys.argv # 自动获取命令行参数列表,第一个参数是自己程序名
import sys
input_file = 'E:\皮皮虾'
output_file = 'E:\小龙虾'
if len(sys.argv)==3:
input_file = sys.argv[1]
output_file = sys.argv[2]
elif len(sys.argv)==2:
input_file = sys.argv[1]
print(input_file,output_file)
os模块常用方法
import os
print(os.system("dir"))
print(os.getcwd())
os.chdir('C:\python39')
print(os.getcwd())
print(os.path.abspath('./hello.txt'))
os.makedirs('dir1/dir2')
os.removedirs('dir1/dir2')
print(os.listdir())
os.path.abspath(path) # 返回path规范化的绝对路径
print(os.path.split(r'C:\Users\wangshang\Desktop\hello.txt')) # 将path分割成目录和文件名二元组返回
print(os.path.basename(r'C:\Users\wangshang\Desktop\hello.txt'))
print(os.path.join(r'C:\Users\wangshang','Desktop\hello.txt'))
print(__file__)
print(os.path.dirname(os.path.abspath(__file__)))
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
random 随机数模块
import random
print(random.random()) # 随机0~1范围内的小数
print(random.randint(1, 10)) # 随机1~10之间的整数
print(random.randrange(5, 10,2)) # 可以有开始值,结束值,步长
print(random.choices([1,2,3,4])) # 从列表中随机去一个值
lists = [1,2,3,4,5,6]
random.shuffle(lists)
print(lists)
print(random.sample(lists,3))#列表中选3个值生成随机列表
作业
以日期为名字,创建日志文件,文件中包含 姓名 操作日期 操作文件 ,人名和操作日期,操作的文件要自己想办法生成模拟数据,以月为 单位,创建文件夹,存放这些日志文件。
只创建日志文件比如2024-06-14.log 然后将他放到对应月份文件夹下即可
import os
import datetime
import random
def random_name():
return random.choice(['刘阳', '张三', '李四', '王五'])
def random_file():
return random.choice(['微信.exe', '20240614.py', 'word.txt', 'nihao.py'])
def create_folder(log_dir, date):
year_month = date.strftime('%Y-%m')
folder_path = os.path.join(log_dir, year_month)
if not os.path.exists(folder_path):
os.makedirs(folder_path)
return folder_path
def write_log(log_folder, date, name, file_name):
log_name = date.strftime('%Y-%m-%d.log')
log_path = os.path.join(log_folder, log_name)
with open(log_path, 'a', encoding='utf-8') as log_file:
log_entry = f"姓名: {name}, 操作日期: {date.strftime('%Y-%m-%d')}, 操作文件: {file_name}\n"
log_file.write(log_entry)
log_directory = 'logs'
target_date = datetime.date(2024, 6, 14)
log_folder = create_folder(log_directory, target_date)
name = random_name()
file_name = random_file()
write_log(log_folder, target_date, name, file_name)