常见报错及解决方案

  1. **openpyxl** 读取 Excel 文件失败原因:不能有条件格式
  2. 安装库超时

【EXCEL】异常:每次打开都显示成日期格式 - 图1
https://stackoverflow.com/questions/51712693/packagenotinstallederror-package-is-not-installed-in-prefix

利用 Python 得到未来七天天气预报

[分享] Python与Excel交互最好的方式应该是这样

专业网络抓包工具 Telerik Fiddler 5.0.20194.41348 中文汉化版

学习书单

  • 《Python网络数据采集》

【EXCEL】异常:每次打开都显示成日期格式 - 图2
内容简介
本书采用简洁强大的Python语言,介绍了网络数据采集,并为采集新式网络中的各种数据类型提供了全面的指导。第一部分重点介绍网络数据采集的基本原理:如何用Python从网络服务器请求信息,如何对服务器的响应进行基本处理,以及如何以自动化手段与网站进行交互。第二部分介绍如何用网络爬虫测试网站,自动化处理,以及如何通过更多的方式接入网络。
作者简介
Ryan Mitchell
数据科学家、软件工程师,目前在波士顿LinkeDrive公司负责开发公司的API和数据分析工具。此前,曾在Abine公司构建网络爬虫和网络机器人。她经常做网络数据采集项目的咨询工作,主要面向金融和零售业。另著有Instant Web Scraping with Java。
已保存至百度网盘

  • 《编程小白的第一本Python入门书》

image.png

  • 《Python编程快速上手 让繁琐工作自动化》

image.png

  • 《PyCharm 中文指南 2.0 文档》

http://pycharm.iswbm.com/zh_CN/latest/index.html

conda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件及其依赖,并能够在不同的环境之间切换。

Anaconda下载
下载地址:https://www.anaconda.com/download/
Anaconda Navigator
用于管理工具包和环境的图形用户界面,后续涉及的众多管理命令也可以在 Navigator 中手工实现。

命令行工具
anaconda powershell prompt与anaconda prompt
两者的区别: 前者包含了后者,命令更广。https://press.one/files/322f2647c0bb7f85f214c109a35bd3ce744b6710083e64e1b38e19de107076e5

Jupyter notebook
是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。
简而言之,Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示的程序。如在编程过程中需要编写说明文档,可在同一个页面中直接编写,便于作及时的说明和解释。
即Jupyter Notebook中所有交互计算、编写说明文档、数学公式、图片以及其他富媒体形式的输入和输出,都是以文档的形式体现的。
这些文档是保存为后缀名为.ipynb的JSON格式文件,不仅便于版本控制,也方便与他人共享。
此外,文档还可以导出为:HTML、LaTeX、PDF等格式。
Jupyter Notebook的主要特点:
① 编程时具有语法高亮缩进tab补全的功能。
② 可直接通过浏览器运行代码,同时在代码块下方展示运行结果。
③ 以富媒体格式展示计算结果。富媒体格式包括:HTML,LaTeX,PNG,SVG等。
④ 对代码编写说明文档或语句时,支持Markdown语法。
⑤ 支持使用LaTeX编写数学性说明。
Jupyterlab
JupyterLab 是包括了Notebook的下一代用户界面。有模块化的界面,可以在同一个窗口同时打开好几个notebook或文件(HTML, TXT, Markdown等等),都以标签的形式展示,于是就更像是一个IDE。
点击launch会在默认浏览器打开 http://loclhost8888/lab 可以输入python代码。
与notebook的区别:
https://www.cnblogs.com/heenhui2016/p/10637746.html
https://zhuanlan.zhihu.com/p/38612108

Spyder
一个使用Python语言、跨平台的、科学运算集成开发环境。点击 Anaconda Navigator ,第一次启用,会初始化,耐心等待一段时间,加载完成,界面如图。

Qtconsole
一个可执行IPython的仿终端图形界面程序,相比Python Shell界面,可以直接显示代码生成的图形,实现多行代码输入执行,以及内置许多有用的功能和函数。

VSCode
Visual Studio Code一个轻量级但功能强大的袁大妈编辑器,可在桌面运行,内置对JavaScript,TypeScript和Node.js的支持,并为其他语言提供了丰富的扩展生态系统

Orange
通过巧妙的数据可视化执行简单的数据分析,探索统计分布,箱型图和散点图,或深入了解决策树,层次聚类,热图,MDS和线性投影。 在教授数据挖掘时,我们喜欢说明而不是仅仅解释。而橙色很棒。Orange在世界各地的学校,大学和专业培训课程中使用,支持数据科学概念的实践培训和视觉插图。甚至还有专门为教学设计的小部件。
附加组件扩展功能:
使用Orange中可用的各种附加组件从外部数据源挖掘数据,执行自然语言处理和文本挖掘,进行网络分析,推断频繁项目集并执行关联规则挖掘。此外,生物信息学家和分子生物学家可以使用Orange通过差异表达对基因进行排序并进行富集分析。


Anconda下载地址:

说明 Anaconda下载地址
官方首页地址 https://www.anaconda.com/distribution/
官方旧版地址 https://repo.anaconda.com/archive/
官方miniconda地址 https://repo.anaconda.com/miniconda/
国内镜像地址 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
国内miniconda镜像地址 https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda

Anaconda与python版本对应

https://www.jb51.net/article/197003.htm浅谈anaconda python 版本对应关系

Jupyter Notebook教程

生成配置文件

  1. jupyter notebook --generate-config
  1. 在用户目录下找到.jupyter文件夹,打开里面的配置文件,修改路径

image.png

  1. 找到jupyter notebook快捷方式,右键点击属性,目标删除%及其包含的内容,起始位置改为目标文件夹的路径。
  • Jupyter Notebook与conda关联

安装”nb_conda”

  1. conda install nb_conda

将conda创建的环境与Notebook关联
可能出现的错误:版本不兼容,需升级”ipkernel”版本

  1. conda update ipykernel
  2. conda install nb_conda
  3. conda update --all

stackoverflow的答案)


  • Jupyter Notebook与R关联

在此之前安装好R、Rstudio

  1. 使用Conda管理,安装 r-essentials常用包,并将该包配置在当前工作环境下

    1. conda install -c r r-essentials

    要卸载R Essentials软件包,请运行:conda remove r-essentials
    注意:这仅删除R Essentials,并禁用R语言支持。不删除其他R语言包。
    上一步是在没有安装R的情况下操作,或者是在anaconda上使用R,而不是jupyter notebook

  2. 打开R命令行或Rstudio console

    1. install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon', 'pbdZMQ', 'devtools', 'uuid','digest'))
    2. devtools::install_github('IRkernel/IRkernel')

    注意:在R与Rstudio安装包是不同步的,也就是需要分别安装
    jupyter调用的包来自R而不是Rstudio

  3. 执行下列代码

    1. # 只在当前用户下安装
    2. IRkernel::installspec()
    3. # 或者是在系统下安装
    4. IRkernel::installspec(user = FALSE)
  4. 打开Jupyter Notebook就可以新建R

https://www.datacamp.com/community/blog/jupyter-notebook-r


  • 显示目录
  • 在Jupyter Notebook

    1. conda install -c conda-forge jupiyter_contrib_nbextensions
    2. pip install jupyter_contrib_nbextensions
    3. jupyter contrib nbextension install --user

    重新打开jupyter,Home发现多出Nbextensions选项
    点击 Nbextensions——>勾选 Collapsible Headings 和 Table of Contents——>设置完毕,打开一个notebook,发现多出Table of Contents图标

  • 在Jupyterlab

    1. # 安装jupyter-toc,项目地址:https://github.com/jupyterlab/jupyterlab-toc
    2. jupyter labextension install @jupyterlab/toc

  • Jupyter Notebook快捷键

两种键入方式:

  • 编辑模式(绿色):可在单元中输入代码或文本,按 Enter 开启
  • 命令模式(灰色):输入运行程序命令,按 ESC 开启

  • 命令模式:

Enter : 转入编辑模式
Shift-Enter : 运行本单元,选中下个单元
Ctrl-Enter : 运行本单元
Alt-Enter : 运行本单元,在其下插入新单元
Y : 单元转入代码状态
M :单元转入markdown状态
R : 单元转入raw状态
1 : 设定 1 级标题
2 : 设定 2 级标题
3 : 设定 3 级标题
4 : 设定 4 级标题
5 : 设定 5 级标题
6 : 设定 6 级标题
Up : 选中上方单元
K : 选中上方单元
Down : 选中下方单元
J : 选中下方单元
Shift-K : 扩大选中上方单元
Shift-J : 扩大选中下方单元
A : 在上方插入新单元
B : 在下方插入新单元
X : 剪切选中的单元
C : 复制选中的单元
Shift-V : 粘贴到上方单元
V : 粘贴到下方单元
Z : 恢复删除的最后一个单元
D,D : 删除选中的单元
Shift-M : 合并选中的单元
Ctrl-S : 文件存盘
S : 文件存盘
L : 转换行号
O : 转换输出
Shift-O : 转换输出滚动
Esc : 关闭页面
Q : 关闭页面
H : 显示快捷键帮助
I,I : 中断Notebook内核
0,0 : 重启Notebook内核
Shift : 忽略
Shift-Space : 向上滚动
Space : 向下滚动

  • 编辑模式

Tab : 代码补全或缩进
Shift-Tab : 提示
Ctrl-] : 缩进
Ctrl-[ : 解除缩进
Ctrl-A : 全选
Ctrl-Z : 复原
Ctrl-Shift-Z : 再做
Ctrl-Y : 再做
Ctrl-Home : 跳到单元开头
Ctrl-Up : 跳到单元开头
Ctrl-End : 跳到单元末尾
Ctrl-Down : 跳到单元末尾
Ctrl-Left : 跳到左边一个字首
Ctrl-Right : 跳到右边一个字首
Ctrl-Backspace : 删除前面一个字
Ctrl-Delete : 删除后面一个字
Esc : 进入命令模式
Ctrl-M : 进入命令模式
Shift-Enter : 运行本单元,选中下一单元
Ctrl-Enter : 运行本单元
Alt-Enter : 运行本单元,在下面插入一单元
Ctrl-Shift— : 分割单元
Ctrl-Shift-Subtract : 分割单元
Ctrl-S : 文件存盘
Shift : 忽略
Up : 光标上移或转入上一单元
Down :光标下移或转入下一单元

  • .ipynb转为其他格式slide/pdf/html

使用 Jupyterlab

  1. jupyter notebook --generate -config #查看notebook配置文件

用topyra打开markdown文件,再转为其他格式
只需在命令窗口中运行如下命令:
注:需要定位到文件所在路径

  • 转为网页格式html

    1. # 不显示目录
    2. jupyter nbconvert mythesis.ipynb
    3. # 显示目录
    4. notebookdownload toc.html # 无效

    不显示目录
    jupyter nbconvert mythesis.ipynb
    # 显示目录
    notebook上download toc.html %无效
    另一种方法:先markdown,后html

  • 转为pdf

notebook失败

  • 第一种方法:先转为HTML,再浏览器转为pdf
  • 第二种方法:先markdown,后pdf 效果完美

  • 转为MarkDown(.md)

notebook download as (效果完美)

  • 转为Slide

第一步:notebook->View->cell toolbar->slideshow
第二步:
jupyter-nbconvert —to slides mythesis.ipynb —reveal-prefix ‘https://cdn.bootcss.com/reveal.js/3.5.0‘ —output test

https://www.twblogs.net/a/5c19c09cbd9eee5e40bc0a57/zh-cn

另一种方法:RISE
https://zhuanlan.zhihu.com/p/47418033
https://dataxujing.github.io/RISE-making-slides/
https://blog.csdn.net/u011707148/article/details/72801656

  1. pip install jupyter # or python -m pip install jupyter
  2. pip install RISE # https://github.com/damianavila/RISE
  3. jupyter-nbextension install rise --py --sys-prefix
  4. jupyter-nbextension enable rise --py --sys-prefix
  5. jupyter notebook # 换到切项目根目录下执行

注意:安装库出现的700错误时可换个安装方式:pip or conda,还可以选择cmd or anaconda prompt


  • Notebook插件(目录等)

生成目录提供索引,方便阅读
效果图:
【EXCEL】异常:每次打开都显示成日期格式 - 图6

  1. 下载安装(使用cmd或者Anaconda Prompt)

    1. conda install -c conda-forge jupyter_contrib_nbextensions
  2. 打开Notebook,找到Nbextensions,选择开启需要的插件

  • Collapsible Headings (使得各级标题可缩进)
  • Table of Contents (2)(添加目录)

其他插件:https://img-blog.csdn.net/20180521213303801?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dtaHNoaXNoZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

参考来源: https://www.blog.pythonlibrary.org/2018/10/09/how-to-export-jupyter-notebooks-into-other-formats/ jupyterlab教程) https://blog.csdn.net/wmhshishen/article/details/80398370 Jupyter Notebook之提高可读性——插件安装及使用(包括插入目录,目录索引及缩进) https://zhuanlan.zhihu.com/p/107037018 更改jupyter notebook默认存储路径 - 知乎更改jupyter notebook默认存储路径 - 知乎

  • 15个应该掌握的Jupyter Notebook 使用技巧

15个应该掌握的Jupyter Notebook 使用技巧https://m.toutiaocdn.com/i6874363326780932611/?app=news_article×tamp=1600565904&use_new_style=1&req_id=2020092009382401002102622308B99489&group_id=6874363326780932611&tt_from=android_share&utm_medium=toutiao_android&utm_campaign=client_share


Spyder教程

PyCharm教程

pycharm 安装和首次使用

全文/批量替换

image.png

IDE 常用快捷键

pycharm快捷键.xlsx

  • pycharm 快捷键
  • 常用:

Alt + #[0-9] 打开相应的工具窗口
Alt + Shift + F 添加到最喜欢
Alt + Shift + I 根据配置检查当前文件
Ctrl + Alt + S 打开设置页
Ctrl + Alt + Y 同步
Ctrl + BackQuote(‘) 快速切换当前计划
Ctrl + Shift + A 查找编辑器里所有的动作
Ctrl + Shift + F12 最大化编辑开关
Ctrl + Tab 在窗口间进行切换

  1. 编辑

Alt + Enter 快速修正
Alt + Insert 自动生成代码
Ctrl + 鼠标 简介/进入代码定义
Ctrl + / 行注释/取消行注释
Ctrl + Alt + I 自动缩进
Ctrl + Alt + L 代码格式化
Ctrl + Alt + O 优化导入
Ctrl + Alt + Space 快速导入任意类
Ctrl + Alt + T 选中
Ctrl + Backspace 删除到字符开始
Ctrl + D 复制选定的区域或行
Ctrl + Delete 删除到字符结束
Ctrl + Enter 智能线切割
Ctrl + F1 显示错误描述或警告信息
Ctrl + F4 关闭运行的选项卡
Ctrl + Numpad+/- 展开/折叠代码块(当前位置的:函数,注释等)
Ctrl + O 重新方法
Ctrl + P 参数信息(在方法中调用参数)
Ctrl + Q 快速查看文档
Ctrl + Shift + / 块注释
Ctrl + Shift + ]/[ 选定代码块结束、开始
Ctrl + Shift + Enter 语句完成
Ctrl + Shift + J 添加智能线
Ctrl + shift + Numpad+/- 展开/折叠所有代码块
Ctrl + Shift + U 在选定的区域或代码块间切换
Ctrl + Shift + V 从最近的缓冲区粘贴
Ctrl + Shift + W 回到之前状态
Ctrl + Shift + Z —> Redo 重做
Ctrl + Space 基本的代码完成(类、方法、属性)
Ctrl + W 选中增加的代码块
Ctrl + Y 删除选定的行
Ctrl+C/Ctrl+Insert “复制当前行或选定的代码块到剪贴板”
Ctrl+V/Shift+Insert 从剪贴板粘贴
Ctrl+X/Shift+Delete 剪切当前行或选定的代码块到剪贴板
F1 外部文档
Shift + Enter 另起一行
Shift + F1 外部文档,进入web文档主页
Tab / Shift + Tab 缩进、不缩进当前行

  1. 查找

Ctrl + R 替换
Ctrl + Shift + F 或者连续2次敲击shift 全局查找{可以在整个项目中查找某个字符串什么的,如查找某个函数名字符串看之前是怎么使用这个函数的}
Ctrl + Shift + R 全局替换
F3 下一个
Shift + F3 前一个

  1. 导航

Alt + F1 查找当前文件或标识Alt + Home 显示导航条F11书签开关
Alt + Right/Left 跳转到下一个、前一个编辑的选项卡
Alt + Up/Down 跳转到上一个、下一个方法
Ctrl + #[0-9] 跳转到标识的书签
Ctrl + ]/[ 跳转到代码块结束、开始
Ctrl + Alt + B 跳转到实现
Ctrl + Alt + H 调用层次结构
Ctrl + E 当前文件弹出,打开最近使用的文件列表
Ctrl + F12 弹出文件结构
Ctrl + G 查看当前行号、字符号
Ctrl + H 类型层次结构
Ctrl + N 跳转到类
Ctrl + Shift + B 跳转到类型声明
Ctrl + Shift + F11 书签助记开关
Ctrl + Shift + F4 关闭主动运行的选项卡
Ctrl + Shift + H 方法层次结构
Ctrl + Shift + I 查看快速定义
Ctrl + Shift + N 跳转到符号
Ctrl + U 跳转到父方法、父类
Ctrl+Alt+Left/Right 后退、前进
Ctrl+B / Ctrl+Click 跳转到声明
Ctrl+Shift+Backspace 导航到最近编辑区域
Esc 从工具窗口回到编辑窗口
F12 回到先前的工具窗口
F2 / Shift + F2 下一条、前一条高亮的错误
F4 / Ctrl + Enter 编辑资源、查看资源
Shift + Esc 隐藏运行的、最近运行的窗口
Shift + F11 显示书签

  1. 控制

Alt + BackQuote(‘)VCS 快速弹出Alt + Shift + C 查看最近的变化
Ctrl + K 提交项目
Ctrl + T 更新项目

  1. 模板

Ctrl + Alt + J 当前行使用模版
Ctrl +J 插入模版

  1. 搜索相关

Alt + F7/Ctrl + F7 文件中查询用法Ctrl + Alt + F7 显示用法
Ctrl + Shift + F7 文件中用法高亮显示

  1. 调试

Alt + F8 验证表达式Alt + F9 运行游标
Ctrl + Alt + F8 快速验证表达式
Ctrl + F8 断点开关
Ctrl + Shift + F8 查看断点
F7 进入
F8 跳过
F9 恢复程序
Shift + F8 退出

  1. 运行

Alt + Shift + F10 运行模式配置Alt + Shift + F9 调试模式配置
Ctrl + Alt + R 运行manage.py任务
Ctrl + Shift + F10 运行编辑器配置
Shift + F10 运行
Shift + F9 调试

  1. 重构

Alt + Delete 安全删除Ctrl + Alt + C 提取常量
Ctrl + Alt + F 提取字段
Ctrl + Alt + M 提取方法
Ctrl + Alt + N 内联
Ctrl + Alt + P 提取参数
Ctrl + Alt + V 提取属性
Ctrl + F6 更改签名
F5 复制F6剪切
Shift + F6 重命名

快捷键 功能 快捷键 功能
Ctrl+1 单行注释,单次注释,双次取消注释 F5 运行程序
Ctrl+4/5 块注释,单次注释,双次取消注释 Ctrl+Shift+V 调出变量窗口
Ctrl+F5 调试 Ctrl+up 回到文档开头
Ctrl+F12 继续调试 Ctrl+down 回到文档末尾
Ctrl+Shift+F12 调试退出 F6 最后重新运行脚本
Ctrl+F11 调试进入函数 Alt +Down 线向下移动
Ctrl+F10 调试跳出函数 Alt +Up 线向上移动
Ctrl +R 运行单元 Tab/Shift +Tab 代码缩进/反缩进
Ctrl +I 显示帮助 F9 运行选中部分代码

环境配置

国内常用镜像源:

  1. 清华:https://pypi.tuna.tsinghua.edu.cn/simplehttps://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  2. 阿里云:http://mirrors.aliyun.com/pypi/simple/
  3. 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
  4. 华中理工大学:http://pypi.hustunique.com/
  5. 山东理工大学:http://pypi.sdutlinux.org/
  6. 豆瓣:http://pypi.douban.com/simple/
  7. 中科大:https://mirrors.ustc.edu.cn/anaconda/pkgs/free/ 推荐
    a. https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
    b. https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
    c. https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
  8. note:新版ubuntu要求使用https源,要注意

修改镜像源

  1. # 查看已配置的镜像源
  2. conda config --show
  3. # 方法一:命令行修改镜像源
  4. # 删除不需要的镜像源,比如清华源
  5. conda config --remove channels url地址
  6. conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/tensorflow/linux/cpu/
  7. # 添加需要的镜像源
  8. conda config --add channels https://pypi.tuna.tsinghua.edu.cn/simple
  9. # 设置搜索时显示镜像源地址
  10. conda config --set show_channel_urls yes
  11. # 还原默认镜像
  12. conda config --remove-key channels
  13. # 方法二:文件方式修改镜像源
  14. conda info #关注URLs
  15. # 打开".condarc"文件,删除"-default"
  16. 安装包时指定镜像源
  17. pip install -i 国内镜像地址 包名
  18. pip install 包名 -i 国内镜像地址
  19. pip install -i https://mirrors.aliyun.com/pypi/simple/ numpy
  20. # 生成列表文件(在当前用户根目录下)
  21. pip freeze > requirements.txt
  22. # 写入包信息
  23. pip install -r requirements.txt
  24. # 打开文件
  25. requirements.txt

虚拟环境的使用

为什么用虚拟环境:虚拟环境包含python解释器及其安装的包,便于打包在其他设备上使用这个环境,如此项目移到其他设备也能如愿运行。

  1. # 更新conda工具("-n"代替了"-name")
  2. conda update -n base conda
  3. # 查看所有的虚拟环境
  4. conda info -e
  5. conda env list
  6. conda info --envs
  7. #创建python3.6的xxx虚拟环境
  8. set CONDA_FORCE_32BIT=1
  9. conda create -n xxx python=3.6
  10. # 激活名为xxx的虚拟环境
  11. conda activate xxx
  12. # 配置了环境变量的情况下可直接:activate xxx
  13. # 关闭虚拟环境
  14. conda deactivate # 环境变量下同理
  15. # 开启自动激活状态
  16. conda config --set auto_activate_base true # false表示关闭
  17. #删除xxx环境
  18. conda env remove -n xxx

pip / conda 工具的使用

conda、pip都是包管理工具,两者操作相似

  1. # 查看已安装的包
  2. conda list
  3. # 查看指定xxx虚拟环境下已安装的包
  4. conda list -n xxx
  5. # 安装包
  6. conda install 包名
  7. conda install 1 2 3
  8. # 安装指定镜像源
  9. ## pip方法
  10. pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple/
  11. pip install PyQt5-tools -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
  12. ## conda方法
  13. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  14. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  15. conda config --set show_channel_urls yes
  16. conda config --remove-key channels (移除镜像源)
  17. conda config --remove channels 指定的URL # 删除原来镜像
  18. # 安装本地包
  19. pip install ~/Downloads/a.whl
  20. conda install --use-local ~/Downloads/a.tar.bz2
  21. # 安装固定版本的包
  22. conda install 包名 =x.xx
  23. # 更新一个包
  24. conda update 包名
  25. # 更新全部包
  26. conda upgrade --all
  27. # 移除一个包
  28. conda remove 包名

路径与文件目录

在python中,可以用正斜杠“/”和反斜杠“\”表示路径,只是反斜杠表示转义字符,所以反斜杠表示路径时要用“\”,例如:

  • D:\test\test.txt
  • D:/test/test.txt

注:python3要用print()打印

  • 获取/修改当前路径 ```python

    使用 sys

    import sys print sys.argv[0]

    打印多个路径

    print(sys.path)

使用 os 模块,标准库

import os

获得当前工作目录

os.getcwd() # 或者 print(os.getcwd()) print(os.path.abspath(‘.’)) print(os.path.abspath(os.curdir))

获得当前工作目录的父目录

print(os.path.abspath(‘..’))

修改路径

os.chdir(‘C:\Windows\System32’)

  1. - **绝对路径与相对路径**
  2. > 指明文件所在路径的两种方式:
  3. > **绝对路径**:从根文件夹开始,windows系统以盘符(C:、D:)作为根文件夹,OS XLinux系统以正斜杠“/”作为根文件夹
  4. > **相对路径**:文件相对于当前工作目录所在的位置,
  5. ![](https://cdn.nlark.com/yuque/0/2020/gif/2981571/1606719404886-722e98de-2556-4821-8ccc-fa59b1111cb1.gif#crop=0&crop=0&crop=1&crop=1&height=387&id=dYUpm&originHeight=387&originWidth=700&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=700)<br />绝对路径与相对路径之间的转换:
  6. ```python
  7. # 可先定义一个路径path
  8. os.path.abspath(path) # 将路径path转为绝对路径
  9. os.path.isabs(path) # 判断路径path是否为绝对路径:ture false
  10. os.path.relpath(path, start) # 将返回从 start 路径到 path 的相对路径的字符串。如果没有提供 start,就使用当前工作目录作为开始路径。
  11. os.path.dirname(path) # 将返回一个字符串,它包含 path 参数中最后一个斜杠之前的所有内容;调用 os.path.basename(path) 将返回一个字符串,它包含 path 参数中最后一个斜杠之后的所有内容。
  • 父目录、子目录的相互调用方法

    实际就是调用其他文件的函数 见下方链接


代码规范(PEP8)

python如何安装PEP8编码规范-CSDN博客
program: D:\Anaconda3\Scripts\autopep8.exe

.py 文件开头声明

image.png

  1. # encoding: utf-8
  2. """
  3. @author: 你的名字
  4. @contact: 你的邮箱
  5. @software: ${PRODUCT_NAME}
  6. @file: ${NAME}.py
  7. @time: ${DATE} ${TIME}
  8. """

代码布局

  • 分号:不在行尾出现,不用分号连接两条命令
  • 反斜杠:续行符,在使用pycharm这样的IDE进行编辑时,在字符串符号内输入回车会自动补上反斜杠对其进行续行。

    续行的首选方法是在括号、方括号和大括号内使用 Python 的隐含行续行。通过将表达式括在括号中,可以将长行分成多行。这些应该优先于使用反斜杠进行行延续。

  • 行长度:每行不超过80字符

  • 括号:若非连接行,不要在返回语句或条件语句中使用,但元组两边是允许的
  • 缩进:用4个空格,!不能用tab,也不能tab和空格混用;行连接:垂直对齐换行或者使用4空格的悬挂式缩进(第一行不应该有参数)
  • 空行:顶级定义之间空两行,方法定义之间空一行
  • 空格:按照标准的排版规范来使用标点两边的空格, ```python

    分号

    print(‘Hello world!’);print(‘I am linpions.’); # 错误演示

行长度<=80

########################################################################## # 80个井字符

反斜杠

new_os = ‘huawei’ \ ‘HarmonyOS’ \ ‘ is coming’ print(new_os)

  1. <a name="BjIZO"></a>
  2. ## 规范类
  3. <a name="g1e8Z"></a>
  4. ## <br />
  5. ---
  6. <a name="DvHEL"></a>
  7. # 变量和字符串
  8. ```python
  9. # 查看变量类型
  10. type()
  11. print(type())
  1. # 字符串
  2. “任何在这双引号之间的文字”
  3. ‘单引号其实和双引号完全一样’
  4. ‘‘‘三个引号被用于过于长段的文字或者是说明,只是三引号不完你就可以随意换行写下文字’’’
  5. # 字符串的基本用法
  6. ## 1.加法
  7. a = 'plays'
  8. b = 'guiter'
  9. c = 'Robert Johnson'
  10. abc = a + b + c
  11. print(abc)
  12. Robert Johnson plays guiter
  13. # 注意:不同的数据类型不能够合并,但可转换
  14. a = 1
  15. b = '1'
  16. c = int(b)
  17. print(a + c)
  18. ## 2.减法
  19. a = 'words'*3
  20. print(a)
  21. wordswordswords
  • 字符串的分片与索引

Snipaste_2020-12-24_01-35-05.png

  1. name = 'My name is Mike'
  2. print(name[0])
  3. print(name[-4])
  4. print(name[11:14])
  5. print(name[5:]) # 含5
  6. print(name[:5]) # 不含5
  7. # 应用
  8. num = '1386-666-0006'
  9. hid_num = num.replace(num[:9],'*'*9)
  10. print(hid_num)
  11. *********0006
  12. # 另一个应用-电话号码联想功能
  13. search = '168'
  14. num_a = '1386-168-0006'
  15. num_b = '1681-222-0006'
  16. print(search + ' is at ' + str(num_a.find(search)) + ' to ' +str(num_a.find(search) + len(search) + ' of num_a')
  17. 168 is at 5 to 8 of num_a
  • 字符串格式化符

基本的魔法函数

内建(自带)函数
image.png
各个函数官网介绍:https://docs.python.org/3/library/functions.html
1.开始创建函数
image.png

  1. # 一个把摄氏度转化为华氏度的例子
  2. def fahrenheit_converter(C):
  3. fahrenheit = C * 9/5 + 32
  4. return str(fahrenheit) + '˚F'
  5. # 另一种写法
  6. def fahrenheit_converter(C):
  7. fahrenheit = C * 9/5 + 32
  8. print(str(fahrenheit) + '˚F')

读取 EXCEL文件,并写入数据库

  1. 读取excel
  2. 写入数据库 ```python import pymysql import pandas as pd from sqlalchemy import create_engine

file = r’./my.xlsx’ df = pd.read_excel(file)

engine = create_engine(“mysql+pymysql://root:password@localhost:3306/trust”,encoding=’utf-8’)

mysql 是数据库; pymysql是你用的连接数据库的库; root对应数据库用户名; root冒号后面写数据库的密码; @符合后面写数据库地址,本地是localhost,3306是端口,trust是数据库名。

df.to_sql(‘testexcel’,con=engine,if_exists=’replace’,index=False)

  1. 使用pandas
  2. - 将第二行作为标题行
  3. ```python
  4. pd.read_excel('filename.xlsx', header = 1)
  5. df=pd.read_excel(r'TT.xlsx',skiprows=1)
  • 获取列名

    1. 1.[column for column in df]
    2. 2.df.columns.values 返回 array
    3. 3.list(df)
    4. 4.df.columns 返回Index,可以通过 tolist(), 或者 listarray 转换为list
  • 删除列 ```python drop(labels, axis=0, level=None, inplace=False, errors=’raise’)

labels 接受string或array。代表删除的行或列的标签。无默认

axis 接受0或1,代表操作的轴向。默认为0,默认按行删除

levels 接受int或者索引名。代表标签所在级别。默认为None

inplace 接受boolean。代表操作是否对原数据生效,默认为False。

  1. - 指定sheet
  2. ```python
  3. # 默认读取第一个sheet
  4. # 指定sheet
  5. pd.read_excel('filename.xlsx', sheet_name = sheetNameheader = 1)
  • 合并多个表df

    1. DataFrame.concat:沿着一条轴,将多个对象堆叠到一起
    2. concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
    3. keys=None, levels=None, names=None, verify_integrity=False, copy=True):
    4. # pd.concat()只是单纯的把两个表拼接在一起,参数axis是关键,它用于指定合并的轴是行还是列,axis默认是0。
    5. # objs:需要连接的对象集合,一般是列表或字典;
    6. # objs:需要连接的对象集合,一般是列表或字典;
    7. # ignore_index=True:重建索引
  • 删除空值/NAT/NAN

    1. # 超过空值的阈值的行列删除
    2. df1 = df.dropna(thresh=2)

    https://blog.csdn.net/cunchi4221/article/details/107477425

  • 改列的数据类型

https://blog.csdn.net/Caiqiudan/article/details/108001696

  • 写入excel时去索引列

index = False

  • df切片取列

https://zhuanlan.zhihu.com/p/48882741

  • 按日期筛选数据

https://www.cnblogs.com/lemonbit/p/6896499.html

pypy 编译器使 python代码运行更快

https://mp.weixin.qq.com/s/GgZPRUljXP8_o3VM6pYgkw PyPy为什么能让Python比C还快?一文了解内在机制

pypy 特性:

  • 即时编译(Just-in-time)JIT编译
  • 提前编译

微信图片_20210719142329.gif
pypy 维基百科介绍

  • pypy 不兼容python生态系统,只宣称兼容python2.7、3.6、3.7

类 Class 的介绍

[

](https://blog.csdn.net/DeepOscar/article/details/80947155)
对象=属性+方法

  1. class Turtle: # 类名首字母大写
  2. """类的一个简单例子"""
  3. # 属性
  4. color = 'green'
  5. weight = 10
  6. legs = 4
  7. # 方法
  8. def climb(self):
  9. print('我正在很努力的向前爬。。。')
  10. def run(self):
  11. print('我正在飞快的向前跑。。。')
  12. # 类的实例化
  13. tt = Turtle()
  14. tt.climb()

OO = Object Oriented 面向对象
OOA:面向对象分析
OOP:面向对象编程
OOD:面向对象设计
OO的特征:封装、继承、多态

  • 封装 ```python list1 = [2,1,7,5,3] list1.sort() # 排序 list1.append(4)
  1. - 继承:子类自动共享父类之间数据和方法的机制
  2. ```python
  3. class Mylist(list):
  4. pass
  5. list2 = Mylist()
  6. list2.append(5)
  7. list2.append(3)
  8. list2.append(7)
  9. list2.sort()
  • 多态 ```python class A: def fun(self):
    1. print("我是小A。。。")

class B: def fun(self): print(“我是小B。。。”)

a = A() b = B() a.fun() # 输出:我是小A。。。 b.fun() # 输出:我是小B。。。

  1. **self是什么?**
  2. ```python
  3. class Ball:
  4. def setName(self, name):
  5. self.name = name
  6. def kick(self):
  7. print('我叫%s,该死的,谁踢我...' % self.name)
  8. a = Ball()
  9. a.setName('球A')
  10. b = Ball()
  11. b.setName('球B')
  12. c = Ball()
  13. c.setName('土豆')
  14. a.kick() # 输出:我叫球A,该死的,谁踢我...
  15. c.kick() # 输出:我叫土豆,该死的,谁踢我...

—init—(self) 魔法方法

  1. class Ball:
  2. def __init__(self, name):
  3. self.name = name
  4. def kick(self):
  5. print('我叫%s,该死的,谁踢我...' % self.name)
  6. b = Ball('土豆')
  7. b.kick() # 输出:我叫土豆,该死的,谁踢我...
  8. c = Ball() # 返回错误,因为缺失参数name

公有和私有

  1. class Person:
  2. name = '小甲鱼'
  3. p = Person()
  4. p.name # 输出:'小甲鱼'
  5. class Person:
  6. __name = '小甲鱼'
  7. p = Person()
  8. p.name # 输出:错误
  9. p.__name # 输出:错误
  10. class Person:
  11. __name = '小甲鱼'
  12. def getName(self):
  13. return self.__name
  14. p = Person()
  15. p.__name # 输出:错误
  16. p.getName() # 输出:'小甲鱼'
  17. p._Person__name # 输出:小甲鱼

python的class(类)中的object是什么意思?

代替print调试代码:pdb库

https://zhuanlan.zhihu.com/p/37294138 10分钟教程掌握Python调试器pdb


参考来源:
http://c.biancheng.net/view/5693.htmlPython绝对路径和相对路径详解
https://zhuanlan.zhihu.com/p/82029511
https://www.jb51.net/article/156383.htm Python父目录、子目录的相互调用方法
https://zhuanlan.zhihu.com/p/95100538 conda国内镜像修改(最新版)
https://www.jianshu.com/p/9c6b7fc4f1d9 Anaconda修改国内镜像源(Windows操作系统)
https://zhuanlan.zhihu.com/p/117224149 添加jupyterlab快捷方式和改变开始目录
https://blog.csdn.net/weixin_45523154/article/details/102671925 初学Python常见异常错误,总有一处你会遇到!