python中的常用模块

news2024/9/29 1:22:59

os和sys模块

ossys是Python标准库中两个非常重要的模块,它们提供了丰富的方法来与Python解释器以及操作系统交互。

os模块

os模块提供了许多函数,用于处理文件和目录等操作系统任务,如路径管理、执行命令、获取进程信息等。

常用方法:
  • os.getcwd():返回当前工作目录的路径。
  • os.chdir(path):改变当前工作目录到指定的路径。
  • os.listdir(path='.'):列出指定目录下的所有文件和子目录名。
  • os.mkdir(path, mode=0o777):创建一个名为path的文件夹。
  • os.makedirs(name, mode=0o777, exist_ok=False):递归创建目录。
  • os.remove(path) / os.unlink(path):删除指定路径的文件。这两个方法功能相同。
  • os.rmdir(path):删除空目录。
  • os.path.join(a, *p):将多个路径组合后返回。

sys模块

sys模块提供了一系列有关Python解释器和它的环境的函数和变量。

常用方法:
  • sys.argv:命令行参数List,第一个元素是程序本身路径。
  • sys.exit([arg]):退出程序,可选参数可以是给定的返回值或错误消息。
  • sys.version:获取Python解释器版本信息。
  • sys.path:返回模块搜索路径列表。可以被修改(例如添加新路径)以影响未来模块加载行为。

代码示例

import os
import sys

print(" os模块 ".center(100, "-"))
# 获取当前工作目录
current_dir = os.getcwd()
print("Current Directory:", current_dir)

# 列出当前目录下所有内容 , 包括文件和文件夹
print(os.listdir('.'))

# 创建新目录
new_dir = "sample_directory"
if not os.path.exists(new_dir):
    # mode = 0o777 是指定权限 ,如果文件夹存在会报错 : FileExistsError: [Errno 17] File exists: 'sample_directory'
    os.mkdir(new_dir, mode=0o777)
    print(f"Directory {new_dir} created.")

# 删除目录
if os.path.exists(new_dir):
    os.rmdir(new_dir)
    print(f"Directory {new_dir} deleted.")

# 改变当前工作目录
os.chdir("/Users/fangyirui/PycharmProjects/")
print(os.listdir())

# 递归新目录,exist_ok 代表忽略是否已经存在
os.makedirs("sample_directory2/aa/aaa/aaa", mode=0o777, exist_ok=True)

# 获取文件的绝对路径
print(os.path.abspath("xxxx"))

# 获取文件的基本名称,不管文件是否存在
print(os.path.basename("/path/to/somefile.txt"))

# 文件或文件夹改名
os.rename("sample_directory2", "sample_directory3")

print(" sys模块 ".center(100, "-"))
# 打印命令行参数
print("Script name:", sys.argv[0])
for i, arg in enumerate(sys.argv[1:], 1):
    print(f"Arg {i}: {arg}")

# 检查Python版本号
# hasattr 方法:返回对象是否具有给定名称的属性。这是通过调用getattr(obj, name)并捕获AttributeError来完成的。
if not hasattr(sys, "hexversion") or sys.hexversion < 0x03070000:
    sys.exit("This script requires Python 3.7 or later")

print(sys)
print(sys.hexversion)
print(sys.version)
print(0x03070000)

# 添加新搜索路径,python会在这些路径下搜索模块
new_path = "/path/to/add"
if new_path not in sys.path:
    sys.path.append(new_path)

print(sys.path)

sys.exit("测试打印退出信息")

注意

其中sys.argv在pycharm下需要以下配置才行

在这里插入图片描述

在这里插入图片描述

time模块

time模块是Python的标准库之一,它提供了各种与时间相关的函数。这个模块对于执行时间相关的操作,如获取当前时间、延迟程序执行、测量性能等非常有用。

常用方法:

  • time.time():返回自纪元(Epoch,即1970年1月1日 00:00:00 UTC)以来经过的秒数。
  • time.sleep(seconds):使程序暂停指定的秒数。
  • time.localtime([secs]):将从纪元以来的秒数转换为本地时间。如果不提供参数,则默认使用当前时间。
  • time.gmtime([secs]):和localtime类似,但返回UTC时区的struct_time对象。
  • time.strftime(format[, t]):将一个struct_time(默认为当前时间)转换为给定格式的字符串。
  • time.strptime(string[, format]):将格式化字符串转换回struct_time对象。
示例:
import time

# 获取当前时间戳
timestamp = time.time()
print("Current Timestamp:", timestamp)

# 将时间戳转换为本地时间
local_time = time.localtime(timestamp)
print("Local Time:", local_time)

# 格式化日期和时间
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
print("Formatted Time:", formatted_time)

# 程序延迟执行
print("Sleeping for 5 seconds...")
time.sleep(5)
print("Awake!")

# 解析日期字符串
date_string = "2023-04-01"
parsed_date = time.strptime(date_string, "%Y-%m-%d")
print(f"Parsed Date: {parsed_date.tm_year}-{parsed_date.tm_mon}-{parsed_date.tm_mday}")

time.struct_time对象

time.struct_time是Python中time模块定义的一个类,用于表示时间。它是一个具有九个属性的命名元组,这些属性提供了关于日期和时间的详细信息。这种格式便于处理和存储日期时间值。

属性:
  1. tm_year:年份,例如2023
  2. tm_mon:月份,范围从1到12
  3. tm_mday:一个月中的第几天,范围从1到31
  4. tm_hour:小时数,范围从0到23
  5. tm_min:分钟数,范围从0到59
  6. tm_sec:秒数,范围从0到61(60或61是闰秒)
  7. tm_wday:一周中的第几天,星期一为0(范围是0到6)
  8. tm_yday:一年中的第几天,1月1日为1(范围是1到366)
  9. tm_isdst:夏令时标志位。值为1表示当前或给定时间处于夏令时;值为0表示当前或给定时间不处于夏令时;值为-1表示未知。
使用示例

当你使用如time.localtime()time.gmtime()等函数将秒数转换成本地时间或UTC时间时, 这些函数会返回一个填充了上述信息的struct_time对象。

import time

# 获取当前本地时间,并以struct_time形式展示
local_time = time.localtime()
print(local_time)
# 输出可能类似: time.struct_time(tm_year=2023, tm_mon=4, tm_mday=15, ...)

# 访问struct_time对象中特定字段
print("Year:", local_time.tm_year)
print("Month:", local_time.tm_mon)
print("Day of the month:", local_time.tm_mday)

通过使用这种结构化方式来处理日期和时间数据,在进行比较、计算或格式化输出等操作时更加方便和直观。此外,在需要对日期和时间进行序列化或与其他系统交互时也非常有用。

datetime模块是Python的标准库之一,提供了一系列用于处理日期和时间的类。与time模块相比,它提供了更高级别、更灵活且易于使用的接口来操作日期和时间。这个模块支持日期和时间的算术运算,并且能够对日期和时间进行格式化输出或解析。

datetime模块

主要的类:

  1. datetime.date:表示日期。常用属性有year, month, day。
  2. datetime.time:表示一天中的时间。常用属性有hour, minute, second, microsecond。
  3. datetime.datetime:同时包含日期和时间。
  4. datetime.timedelta:表示两个date、time或datetime实例之间的差(以天、秒、微秒等形式)。
  5. datetime.tzinfo:时区信息对象基类。

常用方法:

  • now() / today():获取当前本地日期或者详细到时分秒的当前本地时间。
  • strftime(format):将date或者datetime对象格式化为字符串。
  • strptime(date_string, format):将格式化字符串转换为date或者datetime对象。

示例:

from datetime import datetime, date, time, timedelta

# 获取当前完整时间
now = datetime.now()
print("Current DateTime:", now)

# 获取今天的日期
today = date.today()
print("Today's Date:", today)

# 创建特定日期和时间
some_date = date(2023, 4, 15)
some_time = time(14, 30)
print("Specific Date:", some_date)
print("Specific Time:", some_time)

# 时间加减
tomorrow = today + timedelta(days=1) # 当前日加上一天
last_week = today - timedelta(weeks=1) # 当前日减去一周
print("Tomorrow's Date:", tomorrow)
print("Date Last Week:", last_week)

# 格式化输出
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print("Formatted DateTime:", formatted_date)

# 解析字符串为DateTime对象
parsed_datetime = datetime.strptime(formatted_date,"%Y-%m-%d %H:%M:%S")
print("Parsed DateTime:", parsed_datetime)

节假日倒数脚本

from datetime import datetime, timedelta


def workdays(end_time, chinese_holidays_name):
    start_time = datetime.now()
    # start_time -= timedelta(days=1)
    work_days = 0
    all_days = (end_time - start_time).days
    days_off = [5, 6]
    while start_time.date() < end_time.date():
        # print(start_time, start_time.weekday())
        if start_time.weekday() not in days_off:
            work_days += 1
        start_time += timedelta(days=1)

    print(f"距离【{chinese_holidays_name}】还有{all_days}天,工作日有{work_days}天")


holidays = {
    datetime(2024, 4, 4): "清明",
    datetime(2024, 5, 1): "五一",
    datetime(2024, 6, 8): "端午",
    datetime(2024, 9, 17): "中秋",
    datetime(2024, 10, 1): "国庆",
    datetime(2025, 1, 1): "元旦",
    datetime(2025, 1, 28): "春节"
}

for k, v in holidays.items():
    workdays(k, v)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1516691.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【话题】2024年AI辅助研发趋势,有那些应用领域

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读文章&#xff01; 此篇是【话题达人】系列文章&#xff0c;这一次的话题是《2024年AI辅助研发趋势》 目录 背景概念实践医药领域汽车设计领域展望未来文章推荐 背景 随着人工智能技术的持续发展与突破&#xff0c;2024年AI辅…

如何实现接口

类实现接口 用关键字implements声明自己实现一个或 多个接口 实现 多个接口&#xff0c;用 逗号分隔开 重写接口中的方法 要求&#xff1a;类实现某个接口&#xff0c;类必须重写该接口的所有方法。 重写规则&#xff1a; 去掉public abstact修饰符 给出方法体&#xff08;具…

2024Python二级

1. 2. 前序遍历首先访问根节点再访问左子树和右子树 3. 4. sub不属于保留字 5. 6. 7. 8. continue是再重新开始进行循环&#xff0c;不是题目中所规定字母的话就对它进行输出 9. Python没有主函数的说法 10. 未转化为数据所要求的形式&#xff0c;应首先考虑eval 11. l…

力扣日记3.14-【贪心算法篇】376. 摆动序列

力扣日记&#xff1a;【贪心算法篇】376. 摆动序列 日期&#xff1a;2024.3.14 参考&#xff1a;代码随想录、力扣 376. 摆动序列 题目描述 难度&#xff1a;中等 如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称为 摆动序列 。第一个差&#xff08;…

【动态规划】代码随想录算法训练营第五十七天 |647. 回文子串, 516.最长回文子序列,动态规划总结篇 (待补充)

647. 回文子串 1、题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 2、文章讲解&#xff1a;代码随想录 3、题目&#xff1a; 给定一个字符串&#xff0c;你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串&#xff0c;即使…

html--彩虹马

文章目录 htmljscss 效果 html <!DOCTYPE html> <html lang"en" > <head> <meta charset"UTF-8"> <title>Rainbow Space Unicorn</title> <link rel"stylesheet" href"css/style.css"> &l…

基于智慧灯杆的智慧城市解决方案(2)

功能规划 智慧照明功能 智慧路灯的基本功能仍然是道路照明, 因此对照明功能的智慧化提升是最基本的一项要求。 对道路照明管理进行智慧化提升, 实施智慧照明, 必然将成为智慧城市中道路照明发展的主要方向之一。 智慧照明是集计算机网络技术、 通信技术、 控制技术、 数据…

Kubernetes弃用Dockershim,转向Containerd:影响及如何应对

Kubernetes1.24版本发布时&#xff0c;正式宣布弃用Dockershim&#xff0c;转向Containerd作为默认的容器运行环境。Kubernetes以CRI(Container Runtime Interface)容器运行时接口制定接入准则&#xff0c;用户可以使用Containerd、CRI-O、CRI- Dockerd及其他容器运行时作为Kub…

在分布式环境中使用状态机支持数据的一致性

简介 在本文中&#xff0c;我们将介绍如何在分布式系统中使用transaction以及分布式系统中transaction的局限性。然后我们通过一个具体的例子&#xff0c;介绍了一种通过设计状态机来避免使用transaction的方法。 什么是数据库transaction Transaction是关系型数据普遍支持的…

如何利用WebRTC构建点对点的即时通讯工具

在当今竞争激烈的商业环境中&#xff0c;企业越来越需要构建自己的即时通讯工具来提升内部沟通效率和信息安全&#xff0c;减少第三方工具依赖带来的潜在风险&#xff0c;并能与自身的行业业务深入融合。 拥有专用的通讯平台能够加快信息的流动&#xff0c;提升工作协同和任务执…

【C语言】【时间复杂度】Leetcode 153. 寻找旋转排序数组中的最小值

文章目录 题目时间复杂度概念时间复杂度的计算 解题思路代码呈现 题目 链接: link 时间复杂度 概念 时间复杂度是一种函数&#xff0c;定量地描述了该算法运行的时间。既然是一种函数&#xff0c;就涉及到自变量与因变量。因变量代表是时间复杂的规模&#xff0c;自变量是…

HTTP代理的特性、功能作用是什么样的?

在当今互联网时代&#xff0c;HTTP代理作为网络通信中的一项重要技术&#xff0c;在各行各业都有着广泛的应用。然而&#xff0c;对于许多人来说&#xff0c;HTTP代理的特性和功能作用并不十分清晰。在本文中&#xff0c;我们将深入探讨HTTP代理的各种特性和功能&#xff0c;帮…

Linux系统Docker部署Plik系统结合内网穿透实现公网访问本地文件

文章目录 1. Docker部署Plik2. 本地访问Plik3. Linux安装Cpolar4. 配置Plik公网地址5. 远程访问Plik6. 固定Plik公网地址7. 固定地址访问Plik 本文介绍如何使用Linux docker方式快速安装Plik并且结合Cpolar内网穿透工具实现远程访问&#xff0c;实现随时随地在任意设备上传或者…

jenkins+maven+gitlab自动化构建打包、部署

Jenkins自动化部署实现原理 环境准备 1、jenkins已经安装好 docker安装jenkins 2、gitlab已经安装好 docker安装gitlab 一、Jenkins系统配置 1.Global Tool Configuration 任务构建所用到的编译环境等配置&#xff0c;配置参考&#xff1a; jdk配置&#xff08;jenkins自带…

C# ListView 控件使用

1.基本设置 listView1.Columns.Add("序号", 60); //向 listView1控件中添加1列 同时设置列名称和宽度listView1.Columns.Add("温度", 100); //下同listView1.Columns.Add("偏移", 100);listView1.Columns.Add("分割", 50);listView1…

广州虚拟动力 | AI智能交互型虚拟数字人解决方案

广州虚拟动力整合自研的AI数字人技术与AI大语言模型技术&#xff0c;推出AI智能交互型虚拟数字人解决方案&#xff0c;面向旅游景区、博物馆、银行、医院、营业厅、酒店住宿、大型商场等&#xff0c;以AI数字人为载体&#xff0c;承担公共服务职能&#xff0c;根据各行业特性和…

学习Java的第十天

本章来讲一下什么是字符串 一、什么是字符串 在Java中&#xff0c;最常见的基本类型就是字符串了&#xff0c;哪哪都能见到&#xff0c;如输入语句&#xff0c;输出语句等&#xff01;那么&#xff0c;什么是字符串呢&#xff0c;字符串就是String类&#xff0c;String类是Ja…

1361:产生数(Produce)

【解题思路】 1、将数字拆分保存在数组中&#xff0c;而后转换每一位。 2、将数字变化规则保存在x、y两个一维数组中&#xff0c;x[i]到y[i]是一种转换规则。 3、从n的初始值开始搜索&#xff0c;对n做数字拆分&#xff0c;将拆分后的各位数字保存在一个数组中。针对数组中的每…

使用timm库的一些知识点

timm&#xff08;Torch Image Models&#xff09;是一个在PyTorch上构建的图像模型库&#xff0c;它提供了一系列预训练的深度学习模型&#xff0c;使得研究人员和开发者可以方便地进行图像分类、目标检测等任务。 使用timm库创建模型时&#xff0c;如何确定模型的名字 使用…

3-14八股文学习

八股学习是看别人面试被问到的问题&#xff0c;然后把它发给GPT&#xff0c;让gpt讲一讲&#xff0c;自己再理解一下&#xff0c;真的很想拿offer&#xff0c;想去暑期实习啊啊啊啊啊 你用过什么 SpringBoot 里的什么注解&#xff1f;Spring Boot 中有很多常用的注解&#xff…