Python之路Day6
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之路Day6相关的知识,希望对你有一定的参考价值。
Day6的主要内容是:
configparser模块
shutil模块
subprocess模块
处理xml的模块
1.configparser模块
#! /usr/bin/env python # -*- coding: utf-8 -*- # __author__ = "Q1mi" """ configparser 练习 """ import configparser # 写一个配置文件 config = configparser.ConfigParser() config["DEFAULT"] = {‘ServerAliveInterval‘: ‘45‘, ‘Compression‘: ‘yes‘, ‘CompressionLevel‘: ‘9‘} config[‘bitbucket.org‘] = {} config[‘bitbucket.org‘][‘User‘] = ‘hg‘ config[‘topsecret.server.com‘] = {} topsecret = config[‘topsecret.server.com‘] topsecret[‘Host Port‘] = ‘50022‘ # mutates the parser topsecret[‘ForwardX11‘] = ‘no‘ # same here config[‘DEFAULT‘][‘ForwardX11‘] = ‘yes‘ with open(‘example.ini‘, ‘w‘) as configfile: config.write(configfile) # 读配置文件 config = configparser.ConfigParser() print(config.sections()) a = config.read("test.cfg") print(a) print(config.sections()) print("bitbucket.org" in config.sections()) print(config["bitbucket.org"]["user"]) for key in config["bitbucket.org"]: print(key, config["bitbucket.org"][key]) # 增删改查 config = configparser.ConfigParser() config.read("test.cfg") sec = config.sections() print(sec) options = config.options("bitbucket.org") print(options) item_list = config.items("bitbucket.org") print(item_list) val = config.get("bitbucket.org", "compressionlevel") print(val) val = config.getint("bitbucket.org", "compressionlevel") print(val) # 改写 config.remove_section("bitbucket.org") config.write(open("test2.cfg", "w")) sec = config.has_section("bitbuckrt.org") print(sec) config.add_section("bitbucket.org") sec = config.has_section("bitbuckrt.org") print(sec) config.write(open("test2.cfg", "w")) config.set("bitbucket.org", ‘k1‘, "11111") config.write(open("test2.cfg", "w")) config.remove_option("topsecret.server.com", "port") config.write(open("test2.cfg", "w"))
2.shutil模块
#! /usr/bin/env python # -*- coding: utf-8 -*- # __author__ = "Q1mi" """ 高级的 文件、文件夹、压缩包 处理模块 """ import shutil import os # 将文件内容(文件对象)拷贝到另一个文件中,可以指定部分拷贝 # with open("D:\qimi_WorkSpace\S12\day6\\test1.txt", "rt") as f1, open("D:\qimi_WorkSpace\S12\day6\\test2.txt", "at")as f2: # shutil.copyfileobj(fsrc=f1, fdst=f2) # 拷贝文件 # shutil.copyfile(src="D:\qimi_WorkSpace\S12\day6\\test1.txt",dst="D:\qimi_WorkSpace\S12\day6\\test2.txt") # 仅拷贝权限。内容、组、用户均不变 # print(os.stat("D:\qimi_WorkSpace\S12\day6\\test2.txt")) # shutil.copymode(src="D:\qimi_WorkSpace\S12\day6\\test1.txt", dst="D:\qimi_WorkSpace\S12\day6\\test2.txt") # print(os.stat("D:\qimi_WorkSpace\S12\day6\\test2.txt")) # # 拷贝状态的信息,包括:mode bits, atime, mtime, flags # shutil.copystat(src=,dst=) # # # 拷贝文件和权限 # shutil.copy(src, dst) # 拷贝文件和状态信息 # shutil.copy2(src,dst) # 递归的去拷贝文件 # shutil.ignore_patterns(*patterns) # shutil.copytree(src, dst, symlinks=False, ignore=None) # 递归的去删除文件 # shutil.rmtree(path[, ignore_errors[, onerror]]) # 递归的去移动文件 # shutil.move(src, dst) # 创建压缩包并返回文件路径,例如:zip、tar # shutil.make_archive(base_name, format,...) # # base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径, # 如:www =>保存至当前路径 # 如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/ # format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar” # root_dir: 要压缩的文件夹路径(默认当前目录) # owner: 用户,默认当前用户 # group: 组,默认当前组 # logger: 用于记录日志,通常是logging.Logger对象 # 将D:\qimi_WorkSpace\S12\day6目录下的文件打包成test.tar.gz,放置在当前目录 et = shutil.make_archive("test", ‘gztar‘, root_dir=‘D:\\qimi_WorkSpace\\S12\\day6‘) # shutil模块对压缩包的处理是调用ZipFile和TarFile两个模块来进行的 # zipfile模块 import zipfile # 压缩 z = zipfile.ZipFile(‘test.zip‘, ‘w‘) z.write(‘a.log‘) z.write(‘a.data‘) z.close() # 解压 z = zipfile.ZipFile(‘test.zip‘, ‘r‘) z.extractall() z.close() # tarfile模块 import tarfile # 压缩 tar = tarfile.open(‘test.tar‘,‘w‘) tar.add(‘D:\\qimi_WorkSpace\\S12\\day6\\test1.tar‘, arcname=‘test1.tar‘) tar.add(‘D:\\qimi_WorkSpace\\S12\\day6\\test2.tar‘, arcname=‘test2.tar‘) tar.close() # 解压 tar = tarfile.open(‘test.tar‘,‘r‘) tar.extractall() # 可设置解压地址 tar.close()
3.subprocess模块
#! /usr/bin/env python # -*- coding: utf-8 -*- # __author__ = "Q1mi" """ subprocess模块的练习 """ import subprocess subprocess.run("ipconfig") # subprocess.Popen()用于执行复杂的系统命令 p = subprocess.Popen("ifconfig", shell=True, stdout=subprocess.PIPE) print(p.stdout.read()) # 需要交互的命令用到管道PIPE obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) obj.stdin.write(b"print(‘hello1‘)\n") obj.stdin.write(b"print(‘hello2‘)\n") obj.stdin.write(b"print(‘hello3‘)\n") a = obj.communicate(timeout=10) print(a)
4.处理xml文件的模块
#! /usr/bin/env python # -*- coding: utf-8 -*- # __author__ = "Q1mi" """ xml模块的练习 """ import xml.etree.ElementTree as ET # 解析xml文件 tree = ET.parse("test.xml") # 获取根 root = tree.getroot() print(root.tag) # 遍历xml文档 for child in root: print(child.tag, child.attrib) for i in child: print(i.tag, i.text) # 只遍历year节点 for i in root.iter("year"): print(i.tag, i.text) # 修改和删除xml文件 tree = ET.parse("test2.xml") root = tree.getroot()
以上是关于Python之路Day6的主要内容,如果未能解决你的问题,请参考以下文章