今天为大家分享 5 个让日常编码更简单的 Python 库,全文3900字,阅读15分钟。
https://github.com/amoffat/sh
如果曾经在 Python 中使用过 subprocess 库,那么我们很有可能对它感到失望,它不是最直观的库,可能还有些复杂,并且很难处理底层系统调用的输出。
但是 sh 库结束了低效使用子进程的痛苦,使用 sh 库,我们几乎可以进行任何想要的系统调用,就好像它是一个普通函数一样,这使得执行这些调用变得更加简单和直观。我们可以像使用普通 Python 函数一样使用它们。
sh 库的一些常用功能介绍:
运行命令:sh 库可以使用类似函数调用的方式运行命令。例如,可以使用 sh.ls() 来运行 ls命令。可以通过传递参数来指定命令的选项和参数。
获取输出:sh 库可以获取命令的输出结果。可以使用 .stdout 属性来获取标准输出,.stderr 属性来获取标准错误输出。
管道和重定向:sh 库支持管道和重定向操作。可以使用 | 符号来连接多个命令,使用 > 和 >> 符号来重定向输出到文件。
错误处理:sh 库可以捕获命令执行时的错误,并提供异常处理机制。可以使用 .stderr() 方法来检查命令是否产生了错误输出。
命令别名:sh 库支持为常用的命令创建别名。可以使用 .Command() 方法来创建别名,并在后续的调用中使用该别名来运行命令。
环境变量:sh 库可以设置和获取环境变量。可以使用 .export() 方法来设置环境变量,使用 .env() 方法来获取环境变量的值。
运行脚本:sh 库可以执行脚本文件。可以使用 .bash() 方法来执行 Bash 脚本,使用 .python() 方法来执行 Python 脚本。
并发执行:sh 库支持并发执行多个命令。可以使用 .join() 方法来等待多个命令的完成。
下面是使用 ls 从 sh 获取目录内容的示例:
我们所要做的就是像导入普通函数一样导入系统调用,最好的部分是所有函数都是动态生成的,因此我们应该可以访问底层系统中已经存在的大多数二进制文件。
下次当我们需要进行一些系统调用时,可以尝试使用 sh。
https://github.com/leapfrogonline/rstr
如果我们需要一些易于访问的随机数据的次数是无法计算的,无论是为代码构建测试、填充缓冲区还是用随机数据模糊代码以查看它在哪里中断,rstr 库都能满足我们的需求。
这个方便的小库可让我们生成不同类型的随机字符串数据,它可以生成字母数字数据、特殊符号,甚至使用正则表达式构建复杂的数据模式。
1、生成随机字符串:可以使用 rstr.xeger 方法生成满足指定正则表达式的随机字符串。例如,生成一个包含三个小写字母的随机字符串可以使用以下代码:
import rstr
random_string = rstr.xeger(r'[a-z]{3}')
print(random_string)
输出可能是:“abc”
2、正则表达式匹配:可以使用 rstr.match 方法检查字符串是否与指定的正则表达式匹配。例如,检查一个字符串是否匹配一个包含三个小写字母的正则表达式可以使用以下代码:
import rstr
result = rstr.match(r'[a-z]{3}', 'abc')
print(result) # True
输出为 True,表示匹配成功。
3、正则表达式替换:可以使用 rstr.replace 方法将满足指定正则表达式的字符串替换为其他字符串。例如,将字符串中的所有小写字母替换为大写字母可以使用以下代码:
import rstr
replaced_string = rstr.replace(r'[a-z]', 'ABC', 'abcde')
print(replaced_string)
输出为:“ABCABCABCABCe”
4、例如,假设我们想要一串一定长度的数字。我们可以使用下面的 rstr 片段来完成此操作:
这将打印出随机选择的 10 位数字,便利!
https://ipython.org/
IPython 不是一般的模块,这是一个令人难以置信的交互式 shell 模块,可增强我们的 Python REPL。
介绍一些 Ipython 常用功能:
自动补全:在输入对象、方法或变量名时,按下 Tab 键可以自动补全或列出可用的选项。
内省功能:在变量名后面加上 ?,可以查看该变量的文档字符串。在函数名后面加上 ??,可以查看函数的源代码。
魔法命令:以 %开头的命令称为魔法命令,可以执行一些特殊的操作,如 %run 运行脚本文件、%timeit 测试代码运行时间等。
输入/输出历史:使用变量_ 和 __ 可以分别获取上一条和上上条指令的输出结果。还可以使用 %history 查看历史输入命令。
IPython 为交互式 Python shell 带来了一套很棒的功能,例如自动完成、彩色输出和运行细节。
使用 IPython,引入类和检查函数变得容易得多。命令历史更易于导航,并且我们还可以获得类似于 Zsh 的强大的选项卡完成和自动完成功能。
https://github.com/jmoiron/humanize
这个库实在令人兴奋,它将采用日期、时间和数字等数字,并将它们“人性化”成人类可读的短语,如“三点钟”或“100 亿”,更加优秀的是它会自动执行此操作!
naturaltime:将日期时间转换为易于阅读的相对时间表示。例如,将当前时间减去一小时,结果可能是“1小时前”。
naturalday:将日期转换为易于阅读的相对日期表示。例如,将当前日期减去一天,结果可能是“昨天”。
intcomma:将整数格式化为带有千位分隔符的字符串。例如,将数字1000格式化为“1,000”。
intword:将大整数格式化为带有单位的字符串。例如,将数字1000000格式化为“1 million”。
apnumber:将整数转换为英文序数词的表示形式。例如,将数字5转换为“fifth”。
ordinal:将整数转换为英文序数词的表示形式。例如,将数字5转换为“5th”。
fractional:将小数转换为分数的表示形式。例如,将小数0.5转换为“1/2”。
例如,假设我们正在处理一堆非常大的数字(想想数百万和数十亿),并且希望以更友好的方式向用户展示它们。这个库可以做到这一点,甚至不费吹灰之力:
Output:
人性化模块也非常适合计算我们的股市收益(或损失……)并以易于阅读的方式呈现。
https://github.com/carpedm20/emoji/
最后我们介绍一个有趣的库,这个库是将表情符号添加到文本中。没有人愿意将表情符号直接复制并粘贴到他们的代码中,或者在混乱的字符代码中摸索。
1、将Unicode字符串转换为Emoji表情符号 可以使用unidecode库将Unicode字符串转换为ASCII字符串,然后使用emoji库将ASCII字符串转换为Emoji表情符号。
示例代码:
import emoji
from unidecode import unidecode
# Unicode字符串
text = "I love "
# 转换为ASCII字符串
text = unidecode(text)
# 转换为Emoji表情符号
text = emoji.emojize(text)
print(text)
输出结果:
I love
2、将Emoji表情符号转换为Unicode字符串 可以使用emoji库将Emoji表情符号转换为Unicode字符串。
示例代码:
import emoji
# Emoji表情符号
text = "I love "
# 转换为Unicode字符串
text = emoji.demojize(text)
print(text)
输出结果:
I love
3、检查字符串中是否包含Emoji表情符号 可以使用emoji库的is_emoji()方法判断一个字符是否是Emoji表情符号。
示例代码:
import emoji
# 字符串
text = "I love "
# 检查是否包含Emoji表情符号
for char in text:
if emoji.is_emoji(char):
print(f"Found emoji: {char}")
输出结果:
Found emoji:
4、以下是如何在代码中添加眨眼表情符号的示例: