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

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

1. 获取当前工作目录

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

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

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

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

删除多个嵌套目录:

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

判断路径是否为文件:

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

判断路径是否为目录:

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

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

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

获取文件名和扩展名:

python 复制代码
os.path.splitext('file.txt')  # 返回 ('file', '.txt')
11. 获取路径名

返回文件的目录部分:

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

仅返回文件名:

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

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

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

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

获取文件的属性信息:

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

文件操作

1. 创建空文件
python 复制代码
os.mknod('test.txt')
2. 打开文件

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

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

目录操作

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

实验示例

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

python 复制代码
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 模块为操作系统交互提供了强大的工具集,结合文件读写操作,可以实现高效的自动化任务。

相关推荐
bryant_meng3 分钟前
【python】Distribution
开发语言·python·分布函数·常用分布
2401_8576226620 分钟前
SpringBoot健身房管理:敏捷与自动化
spring boot·后端·自动化
力姆泰克22 分钟前
看电动缸是如何提高农机的自动化水平
大数据·运维·服务器·数据库·人工智能·自动化·1024程序员节
BPM_宏天低代码28 分钟前
低代码 BPA:简化业务流程自动化的新趋势
运维·低代码·自动化
sun0077001 小时前
拷贝 cp -rdp 和 cp -a
linux·运维·服务器
wowocpp1 小时前
ubuntu 22.04 server 安装 anaconda3
linux·运维·ubuntu
m0_594526301 小时前
Python批量合并多个PDF
java·python·pdf
工业互联网专业1 小时前
Python毕业设计选题:基于Hadoop的租房数据分析系统的设计与实现
vue.js·hadoop·python·flask·毕业设计·源码·课程设计
钱钱钱端2 小时前
【压力测试】如何确定系统最大并发用户数?
自动化测试·软件测试·python·职场和发展·压力测试·postman
慕卿扬2 小时前
基于python的机器学习(二)—— 使用Scikit-learn库
笔记·python·学习·机器学习·scikit-learn