Python系列模块之标准库OS详解

news2024/12/23 9:20:09

    感谢点赞和关注 ,每天进步一点点!加油!

目录

​一、模块

 1.1 模块的定义

1.2 模块的分类

1.3 模块的基本导入语法

二、Python中的包

三、标准库之os模块

实战: 钉钉告警应用


一、模块


 1.1 模块的定义


Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。

  • 模块让你能够有逻辑地组织你的 Python 代码段。
  • 相关的代码分配到一个模块里能让你的代码更好用,更易懂。
  • 模块能定义函数,类和变量,模块里也能包含可执行的代码。

1.2 模块的分类


模块分为

  1. 标准库(python自带的模块,可以直接调用)
  2. 开源模块(第三方模块,需要先pip安装,再调用)
  3. 自定义模块(自己定义的模块)

模块存放的路径(RPM安装Python):

1.3 模块的基本导入语法


from modname import *  # from导入模块文件里的所有函数
from modname import name1[, name2[, ... nameN]]  # from导入模块文件里的部分函数

二、Python中的包


包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。

简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__init__.py 用于标识当前文件夹是一个包。

package_runoob 目录下定义 runoob1.py、runoob2.py、__init__.py 文件,test.py 为测试调用包的代码,目录结构如下:

package_runoob/runoob1.py

def runoob1():
    print("I'm in runoob1")

package_runoob/runoob2.py

def runoob2():
    print("I'm in runoob2")

package_runoob/__init__.py

# 通级目录 用 . 导入
from . import runoob1
from . import runoob2
print('package_runoob 初始化')

然后我们在 package_runoob 同级目录下创建 test.py 来调用 package_runoob

test.py

# 导入package包
from package_runoob.runoob2 import runoob2
from package_runoob.runoob1 import runoob1


runoob1()
runoob2()

执行结果:


三、标准库之os模块


os 模块提供了非常丰富的方法用来处理文件和目录。大概操作分为以下 5 类:

  • 查看目录与切换目录
  • 查看文件状态
  • 文件路径相关操作
  • 判断相关操作
  • 文件改名与删除,目录创建与删除

示例: 查看目录与切换目录等

import os

print(os.getcwd())			# 查看当前目录
os.chdir("/tmp")			# 改变当前目录
					
print(os.curdir)			# 打印当前目录.
print(os.pardir)			# 打印上级目录..
os.chdir(os.pardir)			# 切换到上级目录
print(os.listdir("/"))		# 列出目录里的文件,结果是相对路径,并且为list类型

执行结果: 

示例: 查看文件状态

import os

print(os.stat("/root/data01.txt"))	   # 得到文件的状态信息,结果为一个tuple类型
print(os.stat("/root/data01.txt")[6])	   # 得到状态信息(tuple)的第7个元素,也就是得到大小
print(os.stat("/root/data01.txt")[-4])	   # 得到状态信息(tuple)的倒数第4个元素,也就是得到大小
print(os.stat("/root/data01.txt").st_size) # 用这个方法也可以得到文件的大小

print(os.path.getsize(__file__))	 # 得到文件的大小,__file__是特殊变量,代表程序文件自己
print(os.path.getsize("/root/data01.txt")) # 也可以指定想得到大小的任意文件

执行结果: 

示例: 文件路径相关操作

import os

print(os.path.abspath(__file__))		    # 得到文件的绝对路径
print(os.path.dirname("/root/data01.txt"))	# 得到文件的绝对路径的目录名,不包括文件
print(os.path.basename("/root/data01.txt"))	# 得到文件的文件名,不包括目录
print(os.path.split("/root/data01.txt"))	# 把dirname和basename分开,结果为tuple类型
print(os.path.join("/root","data01.txt"))	# 把dirname和basename合并

执行结果:

示例: 判断相关操作

import os

print("判断 是否  为 文件: ",os.path.isfile("/root/data01.txt"))  # 判断是否为文件,结果为bool类型
print("判断是否为绝对路径: ",os.path.isabs("1.txt"))		# 判断是否为绝对路径,结果为bool类型
print("判断 是 否  存  在: ",os.path.exists("/tmp/11.txt"))	# 判断是否存在,结果为bool类型
print("判断 是否 为 目 录: ",os.path.isdir("/tmp/"))		# 判断是否为目录,结果为bool类型
print("判断是否为链接文件: ",os.path.islink("/etc/rc.local"))	# 判断是否为链接文件,结果为bool类型

执行结果:

示例: 文件改名与删除,目录创建与删除等

import os

os.rename("/tmp/1.txt","/tmp/11.txt")	# 改名
#os.remove("/tmp/11.txt")		# 删除

os.mkdir("/tmp/aaa")			# 创建目录
#os.rmdir("/tmp/aaa")			# 删除目录 
os.makedirs("/tmp/a/b/c/d")		# 连续创建多级目录
#os.removedirs("/tmp/a/b/c/d")		# 从内到外一级一级的删除空目录,目录非空则不删除

执行结果:

os.popen()os.system()可以直接调用linux里的命令

# 下面这两句执行操作都可以成功
os.popen("touch /tmp/222")
os.system("touch /tmp/333")

执行结果:

实战: 钉钉告警应用

需求:文本内容使用 钉钉告警发送出来

说明: 告警文件内容 放在 python脚本 路径下的 /tmp/text ,告警内容我们可以自身需求定义。Python 使用Linux 自带的 2.7.5 版本。

msg.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os

headers = {'Content-Type': 'application/json;charset=utf-8'}

# 当前路径
path=sys.path[0]
def msg(text,api_url):
    json_text= {
     "msgtype": "text",
        "text": {
            "content": text
        },"at": {
        "atMobiles": ["1786001xxxx"]
         }

    }
    print requests.post(api_url,json.dumps(json_text),headers=headers).content


if __name__ == '__main__':
    f = open(path + "/tmp/text", "r")
    line = f.readline()
    text= '告警类型:HostName-配置重复\n'

    count = 1
    while line:
        if (count >= 2):
            text = text + line
            line = f.readline()
        count += 1
    f.close()
    # 钉钉的URL
    api_url="https://oapi.dingtalk.com/robot/send?access_token=749b2f448e357b7ffc1bff7b01d3c26a750dfaec75651680fdc8703152837f65"
    msg(text,api_url)

执行脚本

告警成功

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

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

相关文章

【JAVA程序设计】(C00139)基于Springboot+Thymeleaf的药店管理系统

基于SpringbootThymeleaf的药店管理系统 项目简介项目获取开发环境项目技术运行截图 项目简介 本项目为基于SpringbootThymeleaf的药店管理系统(医院药品管理系统、医院管理系统),本项目主要功能为: 药品库存管理(登记…

0基础学习VR全景平台篇第27章:场景管理-视角功能

大家好,欢迎收看蛙色平台免费教程! 功能位置示意 一、本功能将用在哪里? 视角功能:指观看者打开场景时,默认展示的位置内容,可针对视角显示范围、视角远近范围进行设置。 应用场景:几乎每个作品…

通过nginx解决vue项目打包后跨域代理失效问题

这里 我的接口是写在 http://localhost:80上的 接口名是user 需要一个id路径参数 我们知道 80是默认 所以就可以不带端口因此访问就是http://localhost/user/1 然后 我vue项目中的 vue.config.js 配置如下 const { defineConfig } require(vue/cli-service) module.exports …

00后职场人,怎么做到刚来就涨薪5k? 原因竟是学会了这个宝藏工具

经常有粉丝问我有“有哪些适合绝大多数普通职场人的制作大屏的工具?” 确实,在这个内卷的时代,大家想要的是更加炫酷的汇报效果。要满足大多数职场人的大屏工具首先一定要满足以下三点: (1)简单易上手&am…

使用Python技术开发一个社区婴幼儿预防接种系统

婴幼儿预防接种作为社区预防保健的主要工作之一,是儿科临床和公共卫生保健的基础,目前国内外对婴幼儿预防接种工作非常重视。我们社区在工作中改变传统服务理念,根据不同年龄段婴幼儿的心理状态,采取不同心理护理应用,进行婴幼儿预防接种。 本论文主要论述了如何使用Python技术…

国际原油如何投资?国际原油期货投资策略有哪些?

国际原油产品的规模比较大,市场的交易环境是非常安全的,相信很多人都对国际原油产品的投资比较感兴趣,但是个人投资者需要注意:要买卖实体原油几乎是不可能的,投资者参与国际原油投资最方便快速的方式,就是…

【TCP】滑动窗口

滑动窗口 概念: 我们都知道 TCP 是每发送一个数据,都要进行一次确认应答。当上一个数据包收到了应答了, 再发送下一个。 这个模式就有点像我和你面对面聊天,你一句我一句。但这种方式的缺点是效率比较低的。 如果你说完一句话…

大数据面试题:请描述MapReduce中shuffle阶段的工作流程,如何优化shuffle阶段?

map阶段处理的数据如何传递给reduce阶段,是MapReduce框架中最关键的一个流程,这个流程就叫shuffle。 shuffle: 洗牌、发牌——(核心机制:数据分区,排序,合并)。 shuffle是Mapreduce的核心&…

【社区图书馆】记:读完《网络工程师的Python之路:网络运维自动化实战(第2版)》读后感【书评】

🍁博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 文章目录 书籍整体感受书籍中分了11大章&#…

springboot+vue实习管理系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的实习管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风歌&a…

数据库链接池从100ms优化到3ms!

数据库连接池的配置是开发者们常常搞出坑的地方,在配置数据库连接池时,有几个可以说是和直觉背道而驰的原则需要明确。 1万并发用户访问 想象你有一个网站,压力虽然还没到Facebook那个级别,但也有个1万上下的并发访问——也就是…

开发中造成空指针的常见用法,如何避免

1. 前言 《手册》的第 7 页和 25 页有两段关于空指针的描述: 【强制】Object 的 equals 方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。 【推荐】防止 NPE,是程序员的基本修养,注意 NPE 产生的场景: 返回类型为…

AIGC周报|让AI来画《海贼王》;苹果限制员工使用ChatGPT;李彦宏:不担心大模型会让工作消失

AIGC(AI Generated Content)即人工智能生成内容。近期爆火的 AI 聊天机器人 ChatGPT,以及 DallE 2、Stable Diffusion 等文生图模型,都属于 AIGC 的典型案例,它们通过借鉴现有的、人类创造的内容来快速完成内容创作。 …

实现BIM的Revit软件学习资料

实现BIM的Revit软件学习资料 一、BIM与Revit的关系二、Revit使用方法总结(一)快捷键(二)一些技巧 一、BIM与Revit的关系 链接: BIM与Revit是什么关系?看完秒懂系列! REVIT是实现BIM理念的工具之一。 二、Revit使用方…

pyton打包成exe程序简易教程

我们知道,Python程序需要有python环境才能够运行的,但当我们开发出一个程序之后,给到用户 那么用户是不会去添加这个python环境的。 所以为了用户也能够正常使用,我们就需要将这个程序打包成exe程序。 1.打包之前需要先下载一个模…

Java面试知识点(全)-dubbo面试知识点

Dubbo是什么? Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目。 面试官问你如果这个都不清楚,那下面的就没必要问了。 官网:http://dubbo.apache.org 为什么要用Dubbo&#xff1f…

基于 Socket 接口实现自定义协议通信

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 根据自定义的协议规范,使用 Socket 编程接口编写基本的网络应用软件。 掌握 C 语言形式的 Socket 编程接口用法,能够正确发送和接收网络数据包 开发一个客户端,实现人机交互界面和与服务器的…

ChatGPT助力Midjourney解锁惊喜创意

[请wx关注“云智AI助手”关注我们 │ 谢谢支持 ] Cloud wisdom, AI assistant 通过结合这两个强大的基础AI模型的优势,我们能够获得令人惊叹的效果。现在,你将有机会亲眼见证Midjourney和ChatGPT共同合作的潜力。它们能够协同工作,相互补充&…

Shader Graph18-反射、折射函数

一、打开Unreal,新建Material叫做DemoReflectionRefraction 首先是看一下引擎内置的反射,Base Color设置为1是白色,Metallic设置为1金属强度为最大,Roughness为0粗糙度为最小,那么最后的结果球面上显示的就是周围环境。…

目标检测复盘 --3. Fast RCNN

RCNN的CNN部分使用AlexNet作为backbone来提取特征,Fast RCNN使用了VGG16来作为backboneRCNN将2000个框送入网络提取特征,Fast RCNN是将图像送入CNN来提取特征得到一个特征图将SS(Selective Search)算法获取的提议框映射到上面的特征图上,获取…