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

相关推荐
Labiod2 小时前
PlantUML 安装
linux·运维·服务器
枫哥和java2 小时前
python serializer, model drf通过序列化器, 模型获取mysql 一张表某个字段数据库现存的最大值
数据库·python·mysql
无忧无虑Coding3 小时前
pyinstall 打包Django程序
后端·python·django
猫猫不是喵喵.4 小时前
【Linux】Linux入门实操——进程管理(重点)
linux·运维·服务器
ad禥思妙想6 小时前
如何运行python脚本
开发语言·python
威威猫的栗子6 小时前
用 Python 与 Turtle 创作属于你的“冰墩墩”!
开发语言·python·turtle
IT古董6 小时前
【机器学习】超简明Python基础教程
开发语言·人工智能·python·机器学习
qq_q9922502777 小时前
django基于python 语言的酒店推荐系统
后端·python·django
小小不董7 小时前
Oracle OCP认证考试考点详解082系列22
linux·运维·服务器·数据库·oracle·dba
小李L7 小时前
Python3 Flask 应用中使用阿里短信发送
后端·python·flask