Python让繁琐工作自动化(总结)
| 1.Python让繁琐工作自动化 | 关键点 | ||
| 第一部分 基础 |
Python基础 | 整型、浮点型和字符串数据类型 字符串连接和复制 在变量中保存值 |
整型int、浮点型float、字符串strs; 变量名:包含字母、数字、下划线,不能数字开头; |
| 控制流 | 布尔值 比较操作符 布尔操作符 混合布尔和比较操作符 控制流的元素 程序执行 控制流语句 导入模块 用sys.exit()提前结束程序 |
boolean(布尔值)值:真True、假False; 比较操作符会比较两个值,然后返回一个布尔值; 布尔操作符and、or、not; range(5,-1,-1)/543210; |
|
| 函数 | def语句和参数 返回值和return语句 None值 关键字参数和print() 局部和全局作用域 global语句 异常处理 |
一个函数中的局部变量完全与其他函数中的局部变量分隔开来 | |
| 列表 | 列表数据类型 使用列表 增强的赋值操作 方法 类似列表的类型:字符串和元组 |
用下标取得列表中的单个值、负数下标、利用切片取得子列表、用led()取得列表的长度、用下标改变列表中的值、列表连接和列表复制、用del语句从列表中删除值; 列表用于循环、in和not in操作符、多重赋值技巧; 增强赋值:spam = spam + 1; a.index('b')/返回b在列表a中的下标、a.append('b')/在列表a的末尾加入b、a.insert(1,'b')/在列表a中下标1的位置加入b、a.remove('b')/删除列表a中的b、a.sort()/列表a顺序排列; 字符串也是一种列表,yuanzu('hello',)/元组无法修改、tuple(list)/将列表转换为元组、list(tuple)/将元组转换为列表、a = copy.copy(b)/将列表b复制到列表a、a = copy.deepcopy(b)/b为嵌套列表 |
|
| 字典和结构化数据 | 字典数据类型 漂亮打印 使用数据结构对真实世界建模 |
dict={v=1,v=2}/v=2、keys()\values()\items()方法、a in spam=>a in spam.keys()、spam.get('a', 0)/获取字典spam中键a的值,如果不存在默认返回0、spam.setdefault('a', 0)/若字典spam中不存在键a,则新建并赋值0; 漂亮的打印:import pprint......pprint.pprint('str'); v.get(key,0)/返回字典V中键key的值,如果没有则默认为0 |
|
| 字符串操作 | 处理字符串 有用的字符串方法 口令保管箱 在Wiki标记中添加无序列表 |
双引号、转义字符\、原始字符串r、三重单引号多行字符串、三重双引号多行注释、字符串下标和切片、in和not in操作符; upper()/全部大写、lower()/全部小写、isupper()/判断是否都是大写返回T或F、islower()/判断是否都是小写返回T或F、startswith('a')判断是否a开头、endswith('b')判断是否b结束、a.join([b])/将列表b根据a分割返回字符串、a.split('b')/将字符串a根据b分割返回列表、a.rjust(5,'-')/填充右对齐----a、b.ljust(5,'-')/填充左对齐5----、b.center(6,'-')/左右填充居中对齐---b--、a.strip()/删除a左右的空格、a.lstrip()/删除a左边的空格、a.rstrip()/删除a右边的空格、import pyperclip/调用模块,pyperclip.copy('a')/拷贝a,pyperclip.paste()/粘贴a; import sys, sys.argv[]/返回包含命令行参数的列表,也就是命令行传递给程序的参数; isalpha()返回T,如果字符串只包含字母,并且非空; isalnum()返回T,如果字符串只包含字母和数字,并且非空; isdecimal()返回T,如果字符串只包含数字字符,并且非空; isspace()返回T,如果字符串只包含空格、制表符和换行,并且非空; istitle()返回T,如果字符串仅包含以大写字母开头、后面都是小写字母的单词。 |
|
| 第二部分 自动化任务 |
模式匹配与 正则表达式 |
不用正侧表达式来查找文本模式 用正则表达式查找文本模式 用正则表达式匹配更多模式 贪心和非贪心匹配 findall()方法 字符分类 建立自己的字符分类 插入字符和美元字符 通配字符 不区分大小写的匹配 用sub()方法替换字符串 管理复杂的正则表达式 组合使用re.*** 电话号码和Email地址提取程序 |
1.用import re导入正则表达式模块; 2.用re.compile()函数创建一个Regex对象(r'\d\d'); 3.向Regex对象的search()方法传入想要查找的字符串。它返回一个Match对象; 4.调用Match对象的group()方法,返回实际匹配文本的字符串。 ?匹配零次或一次前面的分组; *匹配零次或多次前面的分组; +匹配一次或多次前面的分组; {n}匹配n次前面的分组、{n,}匹配n次或更多前面的分组、{,m}匹配零次到m次前面的分组、{n,m}匹配至少n次至多m次前面的分组、{n,m}?或*?或+?对前面的分组进行非贪心匹配; ^spam字符串必须以spam开始、spam$字符串必须以spam结尾; .匹配除换行以外的所有字符; \d、\w、\s分别匹配数字、单词和空格; \D、\W、\S分别匹配数字、单词和空格以外的所有字符; [abc]匹配方括号内的任意字符abc、[^abc]匹配方括号中除了abc的任意字符; re.compile('a',re.DOTALL)/匹配所有字符、re.compile('a',re.I)/不区分大小写匹配、re.compile('a',re.VERBOSE)/忽略正则表达式中的空白符和注释; strRegex.sub(r'\1***', 'string')/替换string第一个分组的字符串 |
| 读写文件 | 文件与文件路径 文件读写过程 用shelve模块保存变量 用pprint.pformat()函数保存变量 |
os.getcwd()/获取当前工作目录 os.chdir('c:\\windows')/移动当前工作目录到windows文件下 os.makedirs()/创建文件夹 os.path.abspath(path)/返回path所在的绝对路径 os.path.isabs(path)/判断path是否为绝对路径,返回T或F os.path.relpath(path,start)/返回start到path的相对路径 os.path.basename(path)/返回path的文件名 os.path.dirname(path)/返回path的文件目录名称 os.path.split(path)/返回path的的文件名和文件目录名称(元组) os.path.sep/路径分割符 os.path.split(os.path.sep)/将path路径按照路径分隔符分割,并返回一个列表 os.path.join(path,filename)/path+filename,拼接成完整路径 os.path.exists(path)/判断path是否存在,返回T或F os.path.isfile(path)/判断path是否存在并且为文件,返回T或F os.path.isdir(path)/判断path是否存在并且为文件夹,返回T或F .\当前目录、..\上一层目录、 test = open('test.txt','r');test.close()\r只读、w覆盖写入、a末尾写入 shelve.key()、shelve.value()\用于存储python程序中的数据 |
|
| 组织文件 | shutil模块 遍历目录树 用zipfile模块压缩文件 |
import shutil,os shutil.copy(filename,path/file)/将filename复制到path路径下,或复制为file文件 shutil.move(finename,path/file)/将filename移动到path路径下,或覆盖file文件的内容 os.unlink(path)/删除path处的文件 os.rmdir(path)/删除path处的文件夹,文件夹必须为空 os.rmtree(path)/删除path处的文件夹及其包含的所有文件和文件夹 import send2trash send2trash.send2trash(path)/将path处的文件删除至回收站 os.walk(path)/返回path路径下文件夹的名称、path路径下文件夹中子文件夹名称的列表、path路径下文件夹中文件名称的列表 import zipfile,os filezip = zipfile.ZipFile('file.zip')/获取file.zip压缩包的标识 filezip.namelist()/返回file.zip压缩包内文件名的列表 fileinfo = filezip.getinfo('spam.txt')/获取file.zip压缩包内文件的信息 fileinfo.file_size/返回spam.txt文件的大小 fileinfo.compress_size/返回spam.txt文件压缩后的大小 filezip.extractall()/将file.zip压缩包解压缩至当前目录 newzip = zipfile.ZipFile('new.zip','w')/创建一个名为new.zip的压缩包,'a'模式将继续添加文件,而不会覆盖原来的文件 newzip.write('spam.txt',compress_type=zipfile.ZIP_DEFLATED)/将文件spam.txt添加到new.zip压缩包内 newzip.close() |
|
| 调试 | 抛出异常 取得反向跟踪的字符串 断言 日志 IDLE的调试器 |
||
| 从Web抓取信息 | 用requests模块从Web下载文件 将下载的文件保存到硬盘 HTML 用BeautifulSoup模块解析HTML 用selenium模块控制浏览器 |
import webbrowser webbrowser.open('http://www.baidu.com')//在新的选项卡打开百度。 -------------------------------- import requests res = requests.get('http://www.baidu.com/1112.txt')//下载1112.txt文件,并返回一个Response对象。 res.status_code == requests.codes.ok//返回True,说明下载文件成功。 res.text//返回1112.txt内容的字符串。 playFile = open('rome.txt','wb')//以“写二进制”模式打开/新建rome.txt文件。 for chunk in res.iter_content(100000): playFile.write(chunk)//逐条取出1112.txt文件中的内容,写入rome.txt文件中。 playFile.close()//关闭文件。 -------------------------------- import requests, bs4; exFile = open('1.html')//打开本地的1.HTML文件。 exFile = open('http://www.baidu.com/1.html')//打开1.html页面。 res.raise_for_status()//检测下载是否成功。 exText = bs4.BeautifulSoup(exFile.text)//将1.html文件的text属性传递给exText变量。 exRead = bs4.BeautifulSoup(exFile.read())//获取1.html页面中所有的HTML标签。 Read = exRead.select('#author')//返回一个列表,其中包含了所有带有id="author"的元素。 Read[0].getText()//返回列表中的第一个元素的文本。 span = exRead.select('span')[0]//寻找第一个匹配span的元素。 span.get('id')//抓取第一个span元素中,id的值,id="author"。 -------------------------------- from selenium import webdriver browser = webdriver.Firefox() browser.get('http://baidu.com') find_eleniumt_*//匹配查询的第一个元素 find_eleniumts_*//返回所有匹配元素的列表 |
|
| 处理Excel电子表格 | xlrd模块 打开Excel文档 从文档中取得工作表 从表中取得单元格 列字母和数字之间的转换 从表中取得行和列 文档、工作表、单元格 写入Excel文档 创建并保存Excel文档 创建和删除工作表 将值写入单元格 更新工作表 设置单元格和字体风格 Font对象 公式 调整行和列 |
wb = xlrd.open_work(filename)//打开workbook获取excel文件对象; wb.sheet_names()//获取所有表格的名称,返回列表; wb.sheets()//获取所有表格,返回列表; wb.sheet_by_index(sheetx)//获取索引为sheetx的表格; wb.sheet_by_name(sheet_name)//获取名为sheet_name的表格; wb.sheet_loaded(sheet_name|index)//根据表名或索引,判断sheet表格是否导入成功,返回T或F; sheet.nrows//返回sheet表中的有效行数 sheet.row_values(rowx[start_colx=0, end_colx=None])// |
|
| 处理PDF和 Word文档 |
PDF文档 从PDF提取文本 解密PDF 创建PDF 拷贝页面 旋转页面 叠加页面 加密PDF Word文档 读取Word文档 从.docx文件中取得完整的文本 创建Word文档 写入Word文档 添加标题 添加换行符和换页符 添加图像 |
||
| 处理CSV文件和 JSON数据 |
|||
| 保持时间、 计划任务和启动程序 |
|||
| 发送电子邮件和短信 | |||
| 操作图像 | |||
| 用GUI自动化 控制键盘和鼠标 |
|||

浙公网安备 33010602011771号