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['}
- config['bitbucket.org'] = {}
- config['bitbucket.org']['User'] = 'hg'
- config['topsecret.server.com'] = {}
- topsecret = config['topsecret.server.com']
- topsecret[' # 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(")
- 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的更多相关文章
- (转)Python之路,Day6 - 面向对象学习
本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战> ...
- 转:Python之路,Day6 - 面向对象学习
这篇文章写的不错,转来收了 转自:http://www.cnblogs.com/alex3714/articles/5188179.html 本节内容: 面向对象编程介绍 为什么要用面向对象进 ...
- 十一Python之路,Day6 - 面向对象学习
本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战& ...
- Python之路,Day6 - Python基础6
本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...
- Python之路,Day6 - 面向对象学习
本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏 ...
- python之路-Day6
time & datetime模块 #_*_coding:utf-8_*_ __author__ = 'Alex Li' import time # print(time.clock()) # ...
- Python之路
Python学习之路 第一天 Python之路,Day1 - Python基础1介绍.基本语法.流程控制 第一天作业第二天 Python之路,Day2 - Pytho ...
- Python之路【第一篇】python基础
一.python开发 1.开发: 1)高级语言:python .Java .PHP. C# Go ruby c++ ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...
- Python学习记录day6
title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...
随机推荐
- MVC-04 视图(3)
五.Url辅助方法 Url辅助方法与HTML辅助方法很类似,HTML辅助方法用来产生HTML标签,而Url辅助方法则负责用来产生Url网址. @Url.Action("About" ...
- Web Api帮助页面或用户手册
我这么玩Web Api(一):帮助页面或用户手册(Microsoft and Swashbuckle Help Page) 前言 你需要为客户编写Api调用手册?你需要测试你的Api接口?你需要和 ...
- 配置管理多个ssh key
假设需要为两台主机建立ssh key以便抓取.更新代码,主机A:111.111.111.111,主机B:222.222.222.222. 首先,用两个账户(hostA@email.com与hostB@ ...
- BZOJ2440(全然平方数)二分+莫比乌斯容斥
题意:全然平方数是指含有平方数因子的数.求第ki个非全然平方数. 解法:比較明显的二分,getsum(int middle)求1-middle有多少个非全然平方数,然后二分.求1-middle的非全然 ...
- Js 返回页面 or 跳转页面
跳出 iframe 在当前页跳转, window.parent.frames.location.href=www.baidu.com" 跳转页面 onclick="history. ...
- CodeForces 443B Kolya and Tandem Repeat
题目:Click here 题意:给定一个字符串(只包含小写字母,并且最长200)和一个n(表示可以在给定字符串后面任意加n(<=200)个字符).问最长的一条子串长度,子串满足前半等于后半. ...
- Java map取value最大值和最小值
/** * 求Map<K,V>中Value(值)的最小值 * * @param map * @return */ public static Object getMinValue(Map& ...
- python学习之lambda匿名函数
1 Python支持运行时使用“lambda”建立匿名函数(anonymous functions that are not bound to a name). python "lambda ...
- NSString 用法大全。
一.NSString 创建字符串. NSString *astring = @"This is a String!"; 创建空字符串,给予赋值. NSString *astri ...
- 转:不会定义jQuery插件,不要说会jQuery
一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写$("#"),$("."),写了几年就对别人说非常熟悉JQuery.我曾经也是这样的人 ...