• pip国内镜像配置

    由于 pip 源站点部署在国外,下载速度很慢,甚至完全无法访问: 1 2 3 4 $ pip install flask WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x102930588>, 'Connection to pypi.org timed out. (connect timeout=15)')': /simple/flask/ WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x102930f28>, 'Connection to pypi.org timed out. (connect timeout=15)')': /simple/flask/ WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x102930cc0>, 'Connection to pypi.
    阅读全文
  • Python自动化运维经典案例入门

    Python 是一种动态的高级编程语言,语法非常简洁,初学者很容易上手。Python 语言表达力非常强大,三两行代码即可完成其他编程语言可能要写几十上百行的功能,开发效率非常高。因此,它经常作为胶水式语言,在自动化运维等开发领域大显身手。 语法简洁,易于学习 表达力强大,开发效率高 执行效率不高,不擅长大项目 Python能做什么 Python 号称自动化运维领域的编程语言,常见的应用场景均能胜任: 采集性能数据,比如调用 psutils 采集系统和进程指标; 发送数据报表; 调用 xlrd 和 xlwt 生成或处理 Excel 报表; 调用 matplotlib 生成统计图表,例如折线图、直方图、饼图、热力图…… 调用 smtplib 发送邮件报告; 自动执行命令; 调用 pexpect 自动执行交互式命令,支持批量执行; 调用 paramiko 登录 SSH 服务器,执行命令或拷贝文件( scp ); 调用 ansible 在主机集群上执行 playbook ,类似 ansible 的工具还有 fabric ; 开发 Web 接口,利用 fastapi 、flask 等框架实现取数接口; etc 安装第三方包 Python 之所以这么强大,很大程度上得益于它极其丰富的第三方包生态。不管您想做什么,基本都要现成的包!我们直接把包安装好,然后调用就是了。举个例子,想要请求 HTTP 接口,我们可以使用 requests 包。
    阅读全文
  • Python调用tqdm库在命令行输出进度条

    我们经常执行计算机程序,来处理数据或任务。有 GUI 的程序,可以通过进度条实时展示处理进度。那么,命令行程序有办法也展示直观的进度条呢? Python 第三方库 tqdm 就是专门用来展示进度条的,tqdm 是阿拉伯语进度一词 taqadum 的缩写。本节,我们一起来看如何调用 tqdm 库,来输出漂亮直观的进度条。 安装 跟其他 Python 第三方包一样,我们执行 pip 命名来安装 tqdm : 1 pip install tqdm 用法 Python 程序处理数据或任务时,通常是写 for-in 循环逐个遍历。tqdm 提供了一个可迭代对象包装器,可以包装任何可迭代对象,它会在遍历迭代时实时输出进度: 1 2 3 4 5 import time from tqdm import tqdm for task in tqdm(range(10)): time.sleep(0.1) 这个例子调用 range 函数生成 10 个序号,来模拟处理 10 个数据的场景。 range 对象的长度是固定的,因此 tqdm 可以调用 len 函数获得总数,因此可以计算进度: 1 2 >>> len(range(10)) 10 但有些场景,我们并不知道数据或任务的总量有多少,因而无法计算进度,只能计算处理速度:
    阅读全文
  • tabulate

    用过 MySQL 的童鞋一定对那个非常好看的字符表格印象深刻吧!

    Python 中,使用 tabulate 库,可轻松实现一模一样的字符表格。

    快速上手

    废话不多说,先来看看效果:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
        >>> from tabulate import tabulate
    
        >>> table_header = ['Name', 'Chinese', 'Math', 'English']
        >>> table_data = [
        ...     ('Tom', '90', '80', '85'),
        ...     ('Jim', '70', '90', '80'),
        ...     ('Lucy', '90', '70', '90'),
        ... ]
    
        >>> print(tabulate(table_data, headers=table_header, tablefmt='grid'))
        +--------+-----------+--------+-----------+
        | Name   |   Chinese |   Math |   English |
        +========+===========+========+===========+
        | Tom    |        90 |     80 |        85 |
        +--------+-----------+--------+-----------+
        | Jim    |        70 |     90 |        80 |
        +--------+-----------+--------+-----------+
        | Lucy   |        90 |     70 |        90 |
        +--------+-----------+--------+-----------+
    
    阅读全文
  • 用tabulate输出字符表格

    用过 MySQL 的童鞋一定对那个非常好看的字符表格印象深刻吧!

    Python 中,使用 tabulate 库,可以轻松实现一模一样的字符表格。

    快速上手

    废话不多说,先来看看效果:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    >>> from tabulate import tabulate
    
    >>> table_header = ['Name', 'Chinese', 'Math', 'English']
    >>> table_data = [
    ...     ('Tom', '90', '80', '85'),
    ...     ('Jim', '70', '90', '80'),
    ...     ('Lucy', '90', '70', '90'),
    ... ]
    
    >>> print(tabulate(table_data, headers=table_header, tablefmt='grid'))
    +--------+-----------+--------+-----------+
    | Name   |   Chinese |   Math |   English |
    +========+===========+========+===========+
    | Tom    |        90 |     80 |        85 |
    +--------+-----------+--------+-----------+
    | Jim    |        70 |     90 |        80 |
    +--------+-----------+--------+-----------+
    | Lucy   |        90 |     70 |        90 |
    +--------+-----------+--------+-----------+
    
    阅读全文
  • Python面试题精选

    笔者担任 Python 面试官多年,积累了很多面试题,特整理起来,希望对求职者有所帮助。此外,我们从网上摘录了很多经典面试题,配以详尽的讲解,举一反三。

    我们将不定期更新,订阅可以关注我们的公众号: 小菜学编程

    面试题

    1. 用一行代码实现整数 1 至 100 之和

    网上的答案是通过 range 生成 1100 的整数,然后用 sum 求和:

    1
    2
    3
    
    >>> # 解法一
    >>> sum(range(1, 101))
    5050
    

    这行代码确实很有美感,但你想过没有:如果是求 110000000000 之和呢?候选人必须认识到这是一个 O(N) 算法,真的适合所有场景吗?为什么不用等差数列前 N 项和公式进行计算呢?

    阅读全文
  • 一文说清文本编码那些事

    一直以来,编码问题像幽灵一般,不少开发人员都受过它的困扰。

    试想你请求一个数据,却得到一堆乱码,丈二和尚摸不着头脑。有同事质疑你的数据是乱码,虽然你很确定传了 UTF-8 ,却也无法自证清白,更别说帮同事 debug 了。

    有时,靠着百度和一手瞎调的手艺,乱码也能解决。尽管如此,还是很羡慕那些骨灰级程序员。为什么他们每次都能犀利地指出问题,并快速修复呢?原因在于,他们早就把编码问题背后的各种来龙去脉搞清楚了。

    本文从 ASCII 码说起,带你扒一扒编码背后那些事。相信搞清编码的原理后,你将不再畏惧任何编码问题。

    阅读全文
  • 用 Python 读写 Excel 表格

    Python 可以读写 Excel 表格吗?

    当然可以。 Python 下有很多类库可以做到, openpyxl 就是其中的佼佼者。

    openpyxl 的设计非常漂亮 ,你一定会喜欢它!不信请往下看:

    工作簿

    开始 openpyxl 前,无需提前建好工作簿( Workbook )。 只需导入 Workbook 类,便可在内存中创建新工作簿并开始操作:

    1
    2
    
    >>> from openpyxl import Workbook
    >>> wb = Workbook()
    
    阅读全文
  • 用html-table生成HTML表格

    邮件报表 之类的开发任务中,需要生成 HTML 表格。

    使用 Python 生成 HTML 表格基本没啥难度, for 循环遍历一遍数据并输出标签即可。 如果需要实现合并单元格,或者按需调整表格样式,就比较麻烦了。

    这时,可以试试本文的主角 —— html-table 包,借助它可生成各种样式的 HTML 表格。 接下来,以一个简单的例子演示 html-table 的常用用法:

    表格效果图

    阅读全文
  • 用 Python 生成 HTML 表格

    邮件报表 之类的开发任务中,需要生成 HTML 表格。

    使用 Python 生成 HTML 表格基本没啥难度, for 循环遍历一遍数据并输出标签即可。 如果需要实现合并单元格,或者按需调整表格样式,就比较麻烦了。

    这时,可以试试本文的主角 —— html-table 包,借助它可生成各种样式的 HTML 表格。 接下来,以一个简单的例子演示 html-table 的常用用法:

    表格效果图

    阅读全文