当前位置: 首页 > article >正文

Python 在自动化运维时常用到的方法

Python 在自动化运维时常用到的方法

1. 获取当前工作目录

用于获取当前 Python 脚本运行的目录路径:

import os
os.getcwd()
2. 返回指定目录下的所有文件和目录名

列出目录下的文件和文件夹:

os.listdir('path/to/directory')  # 默认为当前目录
3. 删除一个文件
os.remove('file_path')
4. 删除多个目录

删除多个嵌套目录:

os.removedirs(r"/python/test")
5. 检验给出的路径是否是一个文件

判断路径是否为文件:

os.path.isfile('file_path')
6. 检验给出的路径是否是一个目录

判断路径是否为目录:

os.path.isdir('directory_path')
7. 判断是否为绝对路径
os.path.isabs('path')
8. 检验路径是否真实存在
os.path.exists('path')
9. 返回路径的目录名和文件名

拆分路径为目录和文件名:

os.path.split('/home/user/docs/file.txt')  # 返回 ('/home/user/docs', 'file.txt')
10. 分离扩展名

获取文件名和扩展名:

os.path.splitext('file.txt')  # 返回 ('file', '.txt')
11. 获取路径名

返回文件的目录部分:

os.path.dirname('/home/user/docs/file.txt')  # 返回 '/home/user/docs'
12. 获取文件名

仅返回文件名:

os.path.basename('/home/user/docs/file.txt')  # 返回 'file.txt'
13. 运行 shell 命令
os.system('echo Hello World!')
14. 读取和设置环境变量
# 读取环境变量
os.getenv('HOME')

# 设置环境变量
os.putenv('MY_ENV_VAR', 'value')
15. 获取当前平台使用的行终止符

不同操作系统有不同的行终止符:

os.linesep  # Windows: '\r\n', Linux: '\n', macOS: '\r'
16. 显示当前平台名称
os.name  # Windows: 'nt', Linux/Unix: 'posix'
17. 重命名文件或目录
os.rename('old_name', 'new_name')
18. 创建多级目录
os.makedirs(r'c:\python\test')
19. 创建单个目录
os.mkdir('test')
20. 获取文件属性

获取文件的属性信息:

os.stat('file')
21. 修改文件权限和时间戳
os.chmod('file', 0o777)  # 0o777 表示文件的权限
22. 终止当前进程
os.exit()  # 仅在 Python 2.4 可用
23. 获取文件大小
os.path.getsize('file')

文件操作

1. 创建空文件
os.mknod('test.txt')
2. 打开文件

如果文件不存在,将自动创建:

fp = open('test.txt', 'w')  # 打开或创建文件
3. 文件的打开模式
  • w: 以写模式打开
  • a: 以追加模式打开(从文件末尾开始写入)
  • r+: 以读写模式打开
  • w+: 以读写模式打开(会清空文件)
  • a+: 以读写模式打开(写入内容从文件末尾开始)
  • rb, wb, ab, rb+, wb+, ab+: 以二进制模式打开
4. 读取文件内容
# 读取文件内容
fp.read([size])  # size 为读取的字节数
fp.readline([size])  # 读取一行
fp.readlines()  # 读取所有行
5. 写入文件内容
fp.write('Hello World!')
fp.writelines(['line1\n', 'line2\n'])
6. 文件操作常用方法
fp.close()  # 关闭文件
fp.flush()  # 刷新缓冲区内容到磁盘
fp.fileno()  # 返回文件的文件描述符
fp.isatty()  # 判断文件是否为终端设备
fp.tell()  # 获取当前文件指针位置
fp.seek(offset[, whence])  # 移动文件指针到指定位置
fp.truncate([size])  # 截断文件到指定大小

目录操作

1. 创建目录
os.mkdir('dir_name')
2. 复制文件
import shutil
shutil.copyfile('oldfile', 'newfile')
shutil.copy('oldfile', 'newfile')  # newfile 可以是文件或目录
3. 复制文件夹
shutil.copytree('olddir', 'newdir')  # newdir 必须不存在
4. 重命名文件或目录
os.rename('oldname', 'newname')
5. 移动文件或目录
shutil.move('oldpos', 'newpos')
6. 删除文件
os.remove('file')
7. 删除目录
os.rmdir('dir')  # 仅能删除空目录
shutil.rmtree('dir')  # 递归删除目录及其内容
8. 更换当前工作目录
os.chdir('path')

实验示例

以下示例演示了文件读写操作和一些常用方法:

fso = open("f:\\a.txt", 'w+')  # 以 w+ 模式打开文件(会清空文件)
print(fso.tell())  # 文件为空,tell() = 0

fso.write("abcde\n")  # 写入 "abcde\n",总计写入 6 个字符
print(fso.tell())  # tell() = 6

fso.write("fghwm")  # 追加写入 "fghwm",文件总计 11 个字符
print(fso.tell())  # tell() = 11

fso.seek(1, 0)  # 文件指针移动到第 1 个字符
print(fso.tell())  # tell() = 1

print(fso.readline())  # 从第 2 个字符开始读取一行,输出 "bcde\n"
print(fso.tell())  # tell() = 6

fso.truncate(8)  # 文件截断为 8 个字符,文件内容为 "abcde\nf"
print(fso.tell())  # tell() 仍然为 6

print(fso.readline())  # 从第 7 个字符读取,输出 "f"
fso.close()  # 关闭文件

小结

上述内容展示了在自动化运维中常用的 Python 文件操作和目录管理方法。Python 的 osshutil 模块为操作系统交互提供了强大的工具集,结合文件读写操作,可以实现高效的自动化任务。


http://www.kler.cn/news/327983.html

相关文章:

  • 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——15.红黑树
  • C# C++ 笔记
  • 使用cmake配置pcl环境
  • 基于云开发进行快速搭建企业智能名片小程序
  • 考研数据结构——顺序表代码题
  • SQL进阶技巧:影院相邻的座位如何预定?
  • 计算机毕业设计Hadoop+Spark知识图谱体育赛事推荐系统 体育赛事热度预测系统 体育赛事数据分析 体育赛事可视化 体育赛事大数据 大数据毕设
  • B树简介:高效数据存储与检索的利器
  • RabbitMQ应用
  • @SpringBootTest 和 @Test的区别
  • 高效处理大规模数据:MATLAB实践指南
  • C#基于SkiaSharp实现印章管理(9)
  • 基于Spring Boot的校园管理系统
  • linux部署redis,整合ansible和redis
  • 如何在算家云搭建MVSEP-MDX23(音频分离)
  • 深度学习500问——Chapter17:模型压缩及移动端部署(2)
  • ubuntu安装ftp服务器
  • 前端Vue.js与后端Flask/Django协同开发指南
  • Java面试题真题·人才招聘系统项目介绍
  • 【Java 集合】List接口 —— ArrayList 与 LinkedList 详解
  • 针对考研的C语言学习(定制化快速掌握重点2)
  • 深度解析 HTTP
  • Linux集群部署RabbitMQ
  • 从Linux系统的角度看待文件-基础IO
  • Linux服务器配置anaconda3,下载torch
  • Brave编译指南2024 MacOS篇-拉取源码前的准备工作(二)
  • 鸿蒙开发(NEXT/API 12)【硬件(外设扩展驱动开发)】驱动开发服务
  • 【算法】模拟:(leetcode)6.Z 字形变换(medium)
  • 数据预处理:数据挖掘的第一步
  • 基于STM32的智能门禁系统