Python文件和目录模块介绍:glob、shutil、ConfigParser

时间:2023-12-28 09:14:20

glob模块

查找符合特定规则的文件路径名,路径名可以使用绝对路径也可以使用相对路径。查找文件会使用到三个通配符,星号*,问号?和中括号[],其中"*"表示匹配0~n个字符,

"?"表示匹配任意1个字符;"[]"表示匹配指定范围内的字符,如[0-9]匹配数字。

常用函数

glob.glob() 获取所有匹配的文件路径列表
glob.iglob() 获取一个可遍历对象,使用它可以逐个获取匹配的文件路径名。与glob()的区别是:glob()一次获取所有匹配路径。而iglob()一次只获取一个匹配路径。

实例

>>> import glob
>>> glob.glob('/home/test1/*.txt') #查找/home/test1目录下所有以.txt为后缀的文件
['/home/test1/2.txt', '/home/test1/11.txt', '/home/test1/10.txt', '/home/test1/1.txt']
>>> glob.glob('/home/*/*.txt') #查找/home目录下所有以.txt为后缀的文件
['/home/test2/2.txt', '/home/test2/11.txt', '/home/test2/10.txt', '/home/test2/1.txt', '/home/test1/2.txt', '/home/test1/11.txt', '/home/test1/10.txt', '/home/test1/1.txt']
>>> glob.glob('/home/test1/1*.txt') #查找/home/test1目录下1.txt文件以及所有以1开头后跟任意1个字符的.txt为后缀的文件
['/home/test1/11.txt', '/home/test1/10.txt', '/home/test1/1.txt']
>>> glob.glob('/home/test1/1?.txt') #查找/home/test1目录下所有以1开头后跟1个字符的.txt为后缀的文件
['/home/test1/11.txt', '/home/test1/10.txt']

shutil模块

shutil模块是对os模块中文件操作的补充,提供文件和目录的移动、复制、打包、压缩、解压等功能

常用函数

shutil.copyfile(src, dst) 复制文件, 如果dst已存在则覆盖
shutil.move(src, dst) 移动文件或重命名
shutil.copymode(src, dst) 只拷贝权限。文件内容、组、用户均不变
shutil.copystat(src, dst) 复制权限、最后访问时间、最后修改时间
shutil.copy(src, dst) 复制一个文件到一个文件或一个目录
shutil.copy2(src, dst) 复制文件和状态信息,类似于shell中的cp –p命令
shutil.copytree(olddir, newdir, symlinks=False, ignore=None) 递归复制文件夹
shutil.rmtree(src) 递归删除目录以及目录内的所有内容
shutil.make_archive(base_name, format,...) 创建压缩包并返回文件路径,shutil 对压缩包的处理是通过调用ZipFile 和 TarFile两个模块来进行的

实例

>>> import shutil
>>> shutil.copy('1.txt','1_copy.txt')
>>> shutil.move('1_copy.txt','1_move.txt')

ConfigParser模块

configparser模块可以用于处理特定格式的配置文件。主要用到ConfigParser.ConfigParser()类。详细介绍见Python文档:ConfigParser介绍

常用函数

ConfigParser.add_section(section)    创建一个新的部分配置
ConfigParser.get(section, option, raw=False, vars=None) 获取部分中的选项值,返回字符串
ConfigParser.getboolean(section, option) 获取部分中的选项值,返回布尔值
ConfigParser.getfloat(section, option) 获取部分中的选项值,返回浮点数
ConfigParser.getint(section, option) 获取部分中的选项值,返回整数
ConfigParser.has_option(section, option) 检查部分中是否存在这个选项
ConfigParser.has_section(section) 检查部分是否在配置文件中
ConfigParser.items(section, raw=False, vars=None) 列表元组形式返回部分中的每一个选项
ConfigParser.options(section) 列表形式返回指定部分选项名称
ConfigParser.read(filenames) 读取ini格式的文件
ConfigParser.remove_option( section, option) 移除部分中的选项
ConfigParser.remove_section(section, option) 移除部分
ConfigParser.sections() 列表形式返回所有部分名称
ConfigParser.set(section, option, value) 设置选项值,存在则更新,否则添加
ConfigParser.write(fp) 写一个ini格式的配置文件

实例一:读取配置文件内容,假设测试文件为servers.ini,文件。内容如下

d:\temp>type servers.ini
[Server_1]
ip = 192.168.0.1
username = root
password = root [Server_2]
ip = 192.168.0.2
username = oracle
password = oracle
d:\temp>

代码如下:

# -*- coding: utf-8 -*-

from ConfigParser import ConfigParser

fp = ConfigParser()
fp.read('servers.ini')
sections = fp.sections()
print sections options = fp.options('Server_1')
print options ip_1 = fp.get('Server_1','ip')
user_1 = fp.get('Server_1','username')
pwd_1 = fp.get('Server_1','password')
print ip_1,user_1,pwd_1

输出结果如下:

['Server_1', 'Server_2']
['ip', 'username', 'password']
192.168.0.1 root root