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

python基础

浏览数:1,130

2019-9-16

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

 

作者:Beng Dou