赞
踩
感谢点赞和关注 ,每天进步一点点!加油!
目录
Python 系列文章学习记录:
Python系列之Windows环境安装配置_开着拖拉机回家的博客-CSDN博客
Python系列之变量和运算符_开着拖拉机回家的博客-CSDN博客
Python系列之判断和循环_开着拖拉机回家的博客-CSDN博客
Python系列之字符串和列表_开着拖拉机回家的博客-CSDN博客
Python系列之文件操作和函数_开着拖拉机回家的博客-CSDN博客
Python系列模块之标准库OS详解_开着拖拉机回家的博客-CSDN博客
Python系列模块之标准库re详解_开着拖拉机回家的博客-CSDN博客
Python系列模块之标准库json详解_开着拖拉机回家的博客-CSDN博客
Python系列模块之标准库shutil详解_开着拖拉机回家的博客-CSDN博客
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
模块分为
模块存放的路径(RPM安装Python):
- from modname import * # from导入模块文件里的所有函数
- from modname import name1[, name2[, ... nameN]] # from导入模块文件里的部分函数
包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 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 模块提供了非常丰富的方法用来处理文件和目录。大概操作分为以下 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)
执行脚本
告警成功
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。