configparser 模块、shutil模块、subprocess模块、logging模块
import configparser con = configparser.ConfigParser() #con对象的read功能,打开文件读取文件,放进内容 con.read('ini',encoding='utf-8') #con对象的sections,内存中寻找所有的xxx result = con.sections() print(result) ret = con.options("kaixin") print(ret)
2019-06-20 09:58:55
configparser
1、获取所有节点
1 import configparser 2 3 config = configparser.ConfigParser() 4 config.read('ini',encoding='utf-8') 5 ret = config.sections() 6 print(ret)
2、获取指定节点下所有的建值对
import configparser config = configparser.ConfigParser() config.read('ini',encoding='utf-8') ret = config.items('kaixin') print(ret)
3、获取指定节点下所有建
1 import configparser 2 3 config = configparser.ConfigParser() 4 config.read('ini',encoding='utf-8') 5 ret = config.options('kaixin') 6 print(ret)
4、获取指定节点下指定key的值
1 import configparser 2 3 config = configparser.ConfigParser() 4 config.read('ini',encoding='utf-8') 5 ret = config.get('kaixin', "age") 6 #ret = config.getint('kaixin', "age")获取整型,如果又不是整型的数据,则会报错。 7 #ret = config.getfloat('kaixin', "age")获取浮点型,如果又不是浮点型的数据,则会报错。 8 #ret = config.getboolean('kaixin', "age")获取布尔型,如果又不是布尔型的数据,则会报错。 9 print(ret)
5、检查、删除、添加节点
import configparser config = configparser.ConfigParser() config.read("ini", encoding="utf-8") #check 检查 has_sec = config.has_section('kaixin') print(has_sec) #返回True,则是有此节点 。 #add 添加节点 config.add_section("SEC_1") #如果SEC_1节点已经存在,则会报错 config.write(open("ini", "w")) #remove 删除节点 config.remove_section("SEC_1") config.write(open("ini", "w"))
6、检查、删除、设置指定组内的键值对
1 import configparser 2 3 config = configparser.ConfigParser() 4 config.read("ini", encoding="utf-8") 5 6 #check 检查键值对 7 has_opt = config.has_option("kaixin","age") 8 print(has_opt)#返回True,则存在此键值对 9 10 #remove 删除键值对 11 config.remove_option("kaixin","age")#文件里age=18,已经删除 12 config.write(open("ini", "w")) 13 14 #set 设置键值对 15 config.set('section1', "k0","123")#在文件中的效果:[seciton1] ko = 123 16 config.write(open("ini", "w"))
shutil
shutil 是高级的 文件、文件夹、压缩包处理模块。
shutil.copyfileobj(fsrc,fdst, length)
1 import shutil 2 #将文件内容拷贝到另一个文件中 3 shutil.copyfileobj(open("old.xml", "r"), open("new.xml", "w")) 4 5 #拷贝文件 如果f1.log不存在会报错.f1拷贝成f2 6 shutil.copyfile('f1.log', "f2.log",) 7 8 #仅拷贝权限、内容、组、用户均不变. 9 shutil.copymode("f1.log", "f2.log") 10 11 #拷贝状态信息、包括:mode bits, atime,mtime,flags 12 shutil.copystat("f1.log", "f2.log") 13 14 #拷贝文件和权限 15 shutil.copy("f1.log", "f2.log") 16 17 #拷贝文件和状态信息 18 shutil.copy2("f1.log", "f2.log") 19 20 #递归拷贝文件夹 21 shutil.copytree('folder1', "folder2" , ignore=shutil.ignore_patterns("*.pyc","tmp*") ) #ignore=shutil.ignore_patterns("*.pyc","tmp*")表示,不拷贝后缀是.pyc和tmp开头的文件 22 23 shutil.copytree('f2', 'f3', symlinks=True,ignore=shutil.ignore_patterns("*.pyc","tmp*")) #symlinks=True 创建快捷方式或者是拷贝。True or Fales
递归的删除文件
1 import shutil 2 shutil.rmtree('foder1')
递归的去移动文件,它类似于mv命令,其实就是重命名。
import shutil shutil.move('folder1','folder2')

zipfile模块——解压缩
1 import zipfile 2 #压缩 3 z = zipfile.ZipFile('old.zip', 'w') #创建一个压缩文件 4 z.write('ini')#把ini文件写入old.zip 5 z.write('new.xml')#把new.xml文件写入old.zip
z.close()
import zipfile #解压缩 z = zipfile.ZipFile('old.zip' , 'r') z.extractall() #可以解压所有文件,extract也可以解压压缩文件中的一个文件 z.close()
tarfile模块——解压缩

subprocess 模块
专门用于Python执行系统命令

import subprocess obj = subprocess.Popen("mkdir t3",shell=True,cwd='/home/dev',)#在执行mkdir t3,先跳转到cwd='/home/dev'目录下
Python传输命令打开系统终端执行此命令
import subprocess #在系统终端输入python,stdin=subprocess.PIPE是三个通道,分别是传输命令到终端、接受返回值、接受错误提示。universal_newlines=True换行符 obj = subprocess.Popen(["python"],stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,universal_newlines=True) obj.stdin.write("print(1)\n") obj.stdin.write("print(2)") obj.stdin.close() cmd_out = obj.stdout.read() #在返回参数通道读取内容 obj.stdout.close() cmd_error = obj.stderr.read()#在返回错误参数通道读取内容 obj.stderr.close() print(cmd_out) print(cmd_error)
import subprocess #在系统终端输入python,stdin=subprocess.PIPE是三个通道,分别是传输命令到终端、接受返回值、接受错误提示。universal_newlines=True换行符 obj = subprocess.Popen(["python"],stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,universal_newlines=True) obj.stdin.write("print(1)\n") obj.stdin.write("print(2)") obj.stdin.close() out_error_list = obj.communicate()#返回值。和错误参数一起输出 print(out_error_list)
import subprocess #在系统终端输入python,stdin=subprocess.PIPE是三个通道,分别是传输命令到终端、接受返回值、接受错误提示。universal_newlines=True换行符 obj = subprocess.Popen(["python"],stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,universal_newlines=True) out_error_list = obj.communicate('print("hello")')#返回值。和错误参数一起输出。传输一条命令时,直接communicate()括号里写 print(out_error_list)
logging模块,线程、安全
import logging logging.basicConfig( filename = 'log.log', format = '%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s', datefmt = '%Y-%m-%d %H:%M:%S %p', level=10,) logging.error('sssss')
import logging logging.basicConfig( filename = 'log.log', format = '%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s', datefmt = '%Y-%m-%d %H:%M:%S %p', level=10,)#level 表示是否被记录的等级。可以查看源码,看具体功能。 logging.error('sssss')

logging模块写多文件日志
专门负责写文件
专门进行比较
1 import logging 2 3 #创建文件 4 file_1_1 = logging.FileHandler('11_1.log', 'a') 5 #创建格式 6 fmt = logging.Formatter(fmt='%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s') 7 #文件应用格式 8 file_1_1.setFormatter(fmt) 9 10 #创建第二个文件 11 file_1_2 = logging.FileHandler('11_2.log', 'a') 12 #创建格式 16 17 logger1 = logging.Logger('s1', level=logging.ERROR) 18 19 logger1.addHandler(file_1_1) 20 logger1.addHandler(file_1_2) 21 22 #写日志 23 logger1.critical('1111')

浙公网安备 33010602011771号