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

相关推荐
doupoa9 分钟前
Fabric 服务端插件开发简述与聊天事件监听转发
运维·python·fabric
BillKu9 分钟前
服务器多JAR程序运行与管理指南
运维·服务器·jar
How_doyou_do21 分钟前
备战菊厂笔试4
python·算法·leetcode
QQ27402875639 分钟前
BlockMesh Ai项目 监控节点部署教程
运维·服务器·web3
(・Д・)ノ1 小时前
python打卡day27
开发语言·python
南棱笑笑生1 小时前
20250512给NanoPi NEO core开发板在Ubuntu core20.04系统更新boot.img
linux·运维·ubuntu
小锋学长生活大爆炸2 小时前
【教程】Docker更换存储位置
运维·docker·容器
小oo呆2 小时前
【学习心得】Jupyter 如何在conda的base环境中其他虚拟环境内核
python·jupyter·conda
愚润求学2 小时前
【Linux】动静态库链接原理
linux·运维·服务器·开发语言·笔记
云攀登者-望正茂3 小时前
无缝部署您的应用程序:将 Jenkins Pipelines 与 ArgoCD 集成
运维·jenkins·argocd