当前位置:   article > 正文

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

python标准库模块

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

目录

​一、模块

 1.1 模块的定义

1.2 模块的分类

1.3 模块的基本导入语法

二、Python中的包

三、标准库之os模块

实战: 钉钉告警应用


Python 系列文章学习记录:

Python系列之Windows环境安装配置_开着拖拉机回家的博客-CSDN博客

Python系列之变量和运算符_开着拖拉机回家的博客-CSDN博客

Python系列之判断和循环_开着拖拉机回家的博客-CSDN博客

Python系列之字符串和列表_开着拖拉机回家的博客-CSDN博客

Python系列之文件操作和函数_开着拖拉机回家的博客-CSDN博客

Python系列模块之标准库OS详解_开着拖拉机回家的博客-CSDN博客

Python系列模块之标准库re详解_开着拖拉机回家的博客-CSDN博客

Python系列模块之标准库json详解_开着拖拉机回家的博客-CSDN博客

Python系列模块之标准库shutil详解_开着拖拉机回家的博客-CSDN博客


一、模块


 1.1 模块的定义


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

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

1.2 模块的分类


模块分为

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

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

1.3 模块的基本导入语法


  1. from modname import * # from导入模块文件里的所有函数
  2. 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

  1. def runoob1():
  2. print("I'm in runoob1")

package_runoob/runoob2.py

  1. def runoob2():
  2. print("I'm in runoob2")

package_runoob/__init__.py

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

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

test.py

  1. # 导入package包
  2. from package_runoob.runoob2 import runoob2
  3. from package_runoob.runoob1 import runoob1
  4. runoob1()
  5. runoob2()

执行结果:


三、标准库之os模块


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

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

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

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

执行结果: 

示例: 查看文件状态

  1. import os
  2. print(os.stat("/root/data01.txt")) # 得到文件的状态信息,结果为一个tuple类型
  3. print(os.stat("/root/data01.txt")[6]) # 得到状态信息(tuple)的第7个元素,也就是得到大小
  4. print(os.stat("/root/data01.txt")[-4]) # 得到状态信息(tuple)的倒数第4个元素,也就是得到大小
  5. print(os.stat("/root/data01.txt").st_size) # 用这个方法也可以得到文件的大小
  6. print(os.path.getsize(__file__)) # 得到文件的大小,__file__是特殊变量,代表程序文件自己
  7. print(os.path.getsize("/root/data01.txt")) # 也可以指定想得到大小的任意文件

执行结果: 

示例: 文件路径相关操作

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

执行结果:

示例: 判断相关操作

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

执行结果:

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

  1. import os
  2. os.rename("/tmp/1.txt","/tmp/11.txt") # 改名
  3. #os.remove("/tmp/11.txt") # 删除
  4. os.mkdir("/tmp/aaa") # 创建目录
  5. #os.rmdir("/tmp/aaa") # 删除目录 
  6. os.makedirs("/tmp/a/b/c/d") # 连续创建多级目录
  7. #os.removedirs("/tmp/a/b/c/d") # 从内到外一级一级的删除空目录,目录非空则不删除

执行结果:

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

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

执行结果:

实战: 钉钉告警应用

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

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

msg.py

  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. import requests
  4. import json
  5. import sys
  6. import os
  7. headers = {'Content-Type': 'application/json;charset=utf-8'}
  8. # 当前路径
  9. path=sys.path[0]
  10. def msg(text,api_url):
  11. json_text= {
  12. "msgtype": "text",
  13. "text": {
  14. "content": text
  15. },"at": {
  16. "atMobiles": ["1786001xxxx"]
  17. }
  18. }
  19. print requests.post(api_url,json.dumps(json_text),headers=headers).content
  20. if __name__ == '__main__':
  21. f = open(path + "/tmp/text", "r")
  22. line = f.readline()
  23. text= '告警类型:HostName-配置重复\n'
  24. count = 1
  25. while line:
  26. if (count >= 2):
  27. text = text + line
  28. line = f.readline()
  29. count += 1
  30. f.close()
  31. # 钉钉的URL
  32. api_url="https://oapi.dingtalk.com/robot/send?access_token=749b2f448e357b7ffc1bff7b01d3c26a750dfaec75651680fdc8703152837f65"
  33. msg(text,api_url)

执行脚本

告警成功

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/729673
推荐阅读
相关标签
  

闽ICP备14008679号