每天编程:非常好用的 Python 路径文件处理库 pathlib

的确,我之前也是习惯用 os.path.join ,倒是也没有觉得有什么不好,直到我看到了 pathlib,应该是 python 3.x 时代引入的新的专门更加优雅的处理比较麻烦的路径拼接、文件是否存在、路径是否存在等操作系统文件路径相关的Python 官方函数。

比如你可以用 path1 / path2 / filename 这样的简单直观的方法来完成路径和文件名的拼接,通过 PurePosixPath 和 PureWindowsPath 的类显式的兼容多操作系统。

原来的 os 库发展太久了,如同 python 的日期时间库一样,在长时间的进化中包和其函数的结构越来越混乱了。从下面的 os 和 pathlib 的函数比较可见一斑:

os and os.pathpathlib
os.path.abspath()Path.resolve()
os.chmod()Path.chmod()
os.mkdir()Path.mkdir()
os.rename()Path.rename()
os.replace()Path.replace()
os.rmdir()Path.rmdir()
os.remove()os.unlink()Path.unlink()
os.getcwd()Path.cwd()
os.path.exists()Path.exists()
os.path.expanduser()Path.expanduser() and Path.home()
os.path.isdir()Path.is_dir()
os.path.isfile()Path.is_file()
os.path.islink()Path.is_symlink()
os.stat()Path.stat()Path.owner(),Path.group()
os.path.isabs()PurePath.is_absolute()
os.path.join()PurePath.joinpath()
os.path.basename()PurePath.name
os.path.dirname()PurePath.parent
os.path.samefile()Path.samefile()
os.path.splitext()PurePath.suffix

Pathlib 非常完美的体现了 Python 的优雅,更多信息可以参考官方文档。打算将 fishbase 中的一些封装的文件处理函数逐步更换为对 Pathlib 的封装,Python 2.7 实在没有必要支持了。

Python 3.6 时代终将结束 迎接 3.7.x

今天看到

“Python 3.6.8 is planned to be the last bugfix release of Python 3.6. Per our support policy, we plan to provide security fixes for Python 3.6 as needed through 2021, five years following its initial release.”

Python 3.6.8 作为 3.6.x 的最后一个错误修订版本了,之后 Python 将全面转向 3.7.x。我觉得影响不是很大,Python 3.7 系列是完全兼容 3.6的,并且很多地方有了提升,一些新特性也不错。

每天编程:jupyter notebook 安装错误问题解决

用新的 wordpress 5.0 的编辑器进行编辑,还有点不习惯,感觉功能很强大的样子。之前还在担心 wordpress 那么多年江郎才尽,完全不需要,就如同我们在思考微信还能玩出什么花样,人家的 7.0 开始玩 vlog,整体界面的设计又更加好看,或者不同了。

jupyter notebook 是我们用来学习和教学 Python 时候非常好的工具,python 这几年的流行推广离不开 jupyter 在背后的功劳,其他语言中都没有看到过这么强大的交互工具,即便 Apple 当年推出 swift 时候的 playground 都略逊一筹。

只是不知道什么时候开始,大约是我在我的笔记本上安装过的 python 版本太多了缘故,不知道什么开始,jupyter nootbook 就不能正常启动了。

解决方法试了很多种,如果你得到的报错结果也是诸如 image not found,并且是从 zmq 这里出问题的话,删除你安装的 pyzmq 和 zmq,然后重新安装,就可以了。如果万一还没有好,所有相关 python 目录,比如你是用 anaconda 安装的话,就把不同的 python 环境下的这些包都删除,再重新安装。

从 WordPress 5.0 已经发布开始遐想

其实记不清是从 WordPress 哪个版本开始使用的,这么多年来,WordPress 也像 Office 一样,其实功能够用了,加上其无比强大的插件体系。可是 WordPress 依然在努力的改进和更新。

未必是看到自己的不足,却看到更好的未来。

这样的大局观,让我很钦佩。

最近几年一直在做一些技术创新,很艰难,很多时候选择了放弃,很多时候不得不放弃。现在想想,却不必自怨自艾。很多事情要坚持,总不会太差。

智商和情商以及种种,在职业上已经让我很难突破,但是谁都不可以阻碍我对电脑技术的热爱。2015年,学习 Python,为了考验自己的 Python 能力,先是2016 年做了一年业余的 Python 老师,然后2017年和同事一起写了 Python 的书;2017年年底开始接触阿里云的技术,顿感惊讶,仿佛看到另外一个世界,于是2018年的半年多业余时间,又是奋笔疾书,能力不够就靠勤奋来补,这本“冲上云霄”2019年年初应该可以付梓吧。而今年,在工作实践中,几方面的探索都让我倍感欣慰,DevOps 的实践探索,开发管理的精细化,Python 的进击,复杂 IT 项目的管理艺术。

这样想想,也很开心。虽然怀念在天目路上海银行的时候,并无人管我具体技术工作,一个人可以开开心心的研究各类开发项目。现在,背负的责任重了很多,很多无奈,很多无法平衡的平衡,但是,舞台却更大了。

舞台大了,心也需要更大。

明年要不要继续写作的节奏,是浸淫多年的 IT 项目管理,还是 DevOps ?哈哈!人生需要一些疯狂。

PyCharm 2018.1 新版本发布

PyCharm 2018.1 新版本如期而至。

对于 Python 3.7 的支持,比如 dataclasses。

更加智能的代码提示。

对单元测试更好的边栏支持。

科学研究模式可以运行部分指定的代码。

通过 conda 环境来支持建立一个科学数据研究项目。

Flask CLI 的支持。(Flask 在目前版本支持 Click 的命令行功能,现在 PyCharm 直接支持 Flask CLI 的调试了)

对于 TypeScript 2.7 的完整支持。

版本管理支持部分提交、更好的 rebase 支持。

远程开发方面支持更容易配置的基于 SSH 的 Python 调试器,提高了对于 Docker Compose 3.3 的支持。

PyCharm 包含了 JetBrainstorm DataGrip 的所有功能。

一直感觉,PyCharm 已经是非常完美的工具,甚至觉得它的功能太多了,已经复杂的很,没想到,依然继续提升,继续跟进所有的技术开发潮流。佩服!

Python 机器学习实战 终于出版

更新:京东购买本书的链接: https://item.jd.com/12289823.html


经过了半年的折腾,书终于出版了,因为春节缘故影响物流,京东等要购买的话需要到3月初。

自己再看写的内容,实在有点惭愧,感觉很多问题没有说清楚,有些可以写得更好。整个目录结构也不尽合理。有机会出第二版再修订吧。

总的来说,还算不容易,完成了一个小小的梦想。

Lazarus 1.8.0 发布

基于 freepascal 3.0.4 的 Lazarus 1.8.0 在12月初发布了。比较了 Delphi 之后的 GUI 开发工具,特别是在用 Python 的时候,也很不死心的想看看怎么样用 Python 来开发桌面应用,不管是基于 Qt,或者 Python 自带的 Tk,都一般吧。或许 Delphi 曾经太强大,已经超过了同时代的所有产品。VB 我已经要二十年不使用了,不知道如何,dotnet 架构现在应该也可以运行在 OSX 下了。

虽然 gdb 的安装还是很奔溃,Borland 当年的 Turbo C 2.0 横空问世现在想想是一件很恐怖的事情,在差不多20年前的电脑上,Delphi 可以几乎几秒就完成一个程序的编译。如果没有 IDE 的话,我们要耗费多少时间在安装、配置以及每次冗长的编译过程。其实 Delphi 还是占据了当前开发市场不小的份额,不过,太贵了。

偶尔如果需要写一些跨平台的小工具,那么 Lazarus 或许是不错的选择,Lazarus 的风格还是像一个增强版的 Delphi 7,不过也的确够用了。

最关键还是配合 Lazarus 和 FreePascal 背后的这些程序员、项目组织者,很不容易,坚持这么多年,逐步完善。

Flake8 Rules

The standardization of writing in programming languages is very important, good programming practices can prevent a lot of bugs.

Python is a language with more freely formatting, so it’s important to follow the famous flake8 rules.

The following article explains in detail every rule of the Flake8, it’s worth learning.

The Big Ol’ List of Rules

I like Pycharm because it can automate monitoring of these rules, so we can write the elegant Python program.

PyCharm 2017.3 发布

我始终认为用敏捷开发的方式持续升级是一件很恐怖的事情,因为不断的提升功能和性能同时又和市场贴近,产品就会非常有竞争力。

PyCharm 就是这样一款产品。PyCharm 2017.3 今天正式发布了,这次主要提升的是各类性能、科学计算、Rest 调试工具等,详细情况可以到 JetBrains 官网查看。

https://www.jetbrains.com/pycharm/whatsnew/#v2017-3-python

最近开始尝试用 Go 语言来进行服务端的测试,我始终不太喜欢 Java 的啰嗦。JetBrains 的 Go 语言工具目前还是在测试中,希望能够尽快提升功能和稳定性,现在这样一个月一个的早期测试版本使用起来也不是很方便。


I always think it’s a wonderful thing to keep upgrades in an agile way, because of the continuous promotion of features and performance and the close to the market, the product will be very competitive.

Pycharm is such a product. Pycharm 2017.3 was officially released today. The main promotion is all kinds of performance improved, scientific computing, Rest debugging tools, and so on. The details can be examined on the JetBrains website.

https://www.jetbrains.com/pycharm/whatsnew/#v2017-3-python

Recently I started trying to test writing server with the Go language. I don’t love Java verbose. JetBrains’s Go language tool is still in the early beta test, hope to improve the function and stability as soon as possible. It is not very convenient to use an early test version that I need update every month.