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