python中的常用模块

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.mfbz.cn/a/456661.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络-第7章 网络安全(1)

主要内容&#xff1a;安全威胁与问题、对称密钥密码体制和公钥密码体制、数字签名与鉴别、网络层和运输层安全协议、应用层电子邮件、系统安全&#xff1a;防火墙与入侵检测 当网络中的用户都来自社会各个阶层和部门时&#xff0c;网络中存储和传输的数据需要保护。 7.1 网络安…

【python开发】并发编程(上)

并发编程&#xff08;上&#xff09; 一、进程和线程&#xff08;一&#xff09;多线程&#xff08;二&#xff09;多进程&#xff08;三&#xff09;GIL锁 二、多线程开发&#xff08;一&#xff09;t.start()&#xff08;二&#xff09;t.join()&#xff08;三&#xff09;t.…

深入了解栈和队列

小伙伴们&#xff0c;今天我们来继续学习数据结构的第二部分内容&#xff0c;就是栈和队列了。那么栈和队列有什么用呢&#xff1f; 栈和队列是两种重要的线性结构。从数据结构的角度看&#xff0c;栈和队列也是线性表&#xff0c;其特殊性在于栈和队列的基本操作是线性表操作…

Linux系统部署Swagger Editor结合内网穿透实现公网管理本地接口文档

文章目录 Swagger Editor本地接口文档公网远程访问1. 部署Swagger Editor2. Linux安装Cpolar3. 配置Swagger Editor公网地址4. 远程访问Swagger Editor5. 固定Swagger Editor公网地址 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xf…

数据结构:图的存储与遍历(待续)

图&#xff08;Graph&#xff09;是一种较线性表和树更为复杂的非线性结构。在图结构中&#xff0c;对结点&#xff08;图中常称为顶点&#xff09;的前驱和后继个数不加限制&#xff0c; 即结点之间的关系是任意的。 一、基本概念和一般结论 因为一条边关联两个顶点&#xff0…

计算机服务器中了devos勒索病毒怎么解密,devos勒索病毒解密工具流程

随着网络技术的不断发展与更新&#xff0c;越来越多的企业利用网络开展了各项工作业务&#xff0c;网络也为企业提供了极大便利&#xff0c;大大提高了办公效率。但网络是一把双刃剑&#xff0c;企业的数据安全问题一直是企业关心的主要话题&#xff0c;近日&#xff0c;云天数…

如何在Windows搭建WebDav服务,并外网可访问

目录 1. 安装IIS必要WebDav组件 2. 客户端测试 3. 使用cpolar内网穿透&#xff0c;将WebDav服务暴露在公网 3.1 打开Web-UI管理界面 3.2 创建隧道 3.3 查看在线隧道列表 4. 公网远程访问 4.1 浏览器访问测试 4.2 映射本地盘符访问 4.3 安装Raidrive客户端 总结&…

由世界第一个AI软件工程师Devin引发的热潮背后----程序员到底会不会被代替?AI发展至如今是否初衷已变?

目录 一.Devin的登场是突破也是导火索 二.Devin的"逆天"能力 1、端到端构建和部署程序 2、自主查找并修复bug 3、训练和微调自己的AI模型 4、修复开源库 5、成熟的生产库也能做贡献 6、学习能力 三.Devin的出现甚至整个AI领域的进步,编程还有未来吗? 1.业…

机试:蛇形矩阵

问题描述: 代码示例: //蛇形矩阵 #include <bits/stdc.h> using namespace std;int main(){int n;cout << "输入样例" << endl; cin >> n;int k 1; for(int i 0; i < n; i){if( i %2 0){//单数行for(int j 0; j < n; j){ cout &…

国际前十正规外汇实时行情走势app软件最新排名(综合版)

外汇交易&#xff0c;作为当今世界金融市场上一个重要的板块&#xff0c;备受关注和热议。随着金融市场的日益发展&#xff0c;外汇交易也发展成为一个新兴的投资交易渠道。为了更好地满足投资者对外汇市场的需求&#xff0c;外汇实时行情走势app软件应运而生&#xff0c;它为投…

字符指针

1、字符指针 在指针的类型中我们知道有一种指针类型为字符指针 char* 一般使用方式&#xff1a; 还有使用方式如下&#xff1a; 注意观察区别&#xff1a;%C 与 %S &#xff1a; 这种方式是将字符串的首地址放到指针中&#xff0c;通过指针可以找到该字符串&#xff08;千万不要…

配置华为交换机环路检测案例

知识改变命运&#xff0c;技术就是要分享&#xff0c;有问题随时联系&#xff0c;免费答疑&#xff0c;欢迎联系&#xff01; ①微思网络&#xff0c;始于2002年&#xff01;专注IT认证培训22年。 ② 领取学习资料/课程咨询&#xff1a;小美老师&#xff08;wx&#xff09;&…

使用采购管理软件构建更高效的采购模式

采购流程是企业整个采购部门的关键要素。无论企业规模大小&#xff0c;构建采购流程的模式都将直接影响企业控制成本、管理风险和保持流程弹性的能力。 下面我们将解释采购模式的类型、优缺点&#xff0c;以及如何确定哪种模式最适合你的采购部门。 集中采购的优缺点 在集中采…

关于腾讯云服务器“地域”选择,地域四点因素请牢记!

腾讯云服务器地域怎么选择&#xff1f;不同地域之间有什么区别&#xff1f;腾讯云哪个地域好&#xff1f;地域选择遵循就近原则&#xff0c;访客距离地域越近网络延迟越低&#xff0c;速度越快。腾讯云百科txybk.com告诉大家关于地域的选择还有很多因素&#xff0c;地域节点选择…

关于nginx做正向代理的那些事

声明&#xff1a;该文章只是用于技术探索的实践与讨论&#xff0c;没有其他用途。 准备&#xff1a; 一台能访问外网的服务器&#xff1b;一个域名&#xff0c;映射到上面的服务器&#xff1b;https的证书及密钥&#xff1b;nginx安装包&#xff1b; 协议使用&#xff1a; 开…

neo4j网页无法打开,启动一会儿后自动关闭,查看neo4j status显示Neo4j is not running.

目录 前情提要User limit of inotify watches reached无法访问此网站 前情提要 公司停电&#xff0c;服务器未能幸免&#xff0c;发现无法访问此网站&#xff0c;http://0.0.0.0:7474 在此之前都还好着 User limit of inotify watches reached (base) [rootlocalhost ~]# n…

ctf_show笔记篇(web入门---sql注入)171-189

sql注入 171&#xff1a;简单的sql注入&#xff0c;尝试万能密码直接过 172&#xff1a;基础联合查询可过 173&#xff1a;过滤flag那就利用substr少取几个flag的名字或者replace 174&#xff1a;两种方法&#xff0c;使用盲注或者利用replace嵌套替换&#xff0c;然后在逆…

新 树莓派4B 温湿度监测 基于debian12的树莓派OS

前言 本文旨在完成通过外接温湿度传感器至树莓派使得树莓派不断记录并存储温湿度数据 这个领域有很多文章&#xff0c;但是部分文章已经缺乏了时效性&#xff0c;在最新系统不适用&#xff0c;本文目前适用 硬件 硬件连接 温湿度传感器常选用DHT11和DHT22&#xff0c;淘宝…

No transform from [base_footprint] to [base_link]

需要查看这两个坐标系之间的转换 果然&#xff0c;demo05_car_base中父坐标系是base_footprint&#xff0c;意思是从base_footprint到base_link的转换&#xff0c;而不是从固定坐标系base_link到base_footprint 修改&#xff1a; 父坐标系修改成base_link即可

1356:计算(calc)

【算法分析】解法1&#xff1a;中缀表达式直接求值 1、设数字栈、运算符栈。设数组表示运算符优先级&#xff0c;其中(优先级最高&#xff0c;)优先级最低。 从左向右扫描表达式字符串&#xff1a; 2、遇到数字时&#xff0c;入数字栈。 3、遇到运算符时&#xff0c;入栈条件为…