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')

 

posted @ 2019-06-19 22:15  Freechen0  阅读(82)  评论(0)    收藏  举报