我目前通过一堆记不太清的 AWK、sed、Bash 和一点点 Perl 来处理我的文本文件。
我已经看到一些地方提到 python 对这种事情有好处。如何使用 Python 替换 shell 脚本、AWK、sed 和朋友?
任何 shell 都有几组特性。
还有——奖金! - 更快速。shell 中的每个单独的 Linux 命令(除了少数例外)都会派生一个子进程。通过使用 Pythonshutil和os模块,您无需创建子进程。
shutil
os
shell 环境特性。这包括设置命令环境的东西(当前目录和环境变量等等)。您可以直接从 Python 轻松管理它。
Shell 编程功能。这是所有进程状态代码检查、各种逻辑命令(if、while、for 等)、测试命令及其所有相关命令。函数定义的东西。这在 Python 中要容易得多。这是摆脱 bash 并在 Python 中实现的巨大胜利之一。
交互功能。这包括命令历史记录和其他内容。您不需要它来编写 shell 脚本。这仅用于人机交互,不适用于脚本编写。
shell 文件管理功能。这包括重定向和管道。这更棘手。其中大部分可以通过子流程完成。但是一些在 shell 中容易做的事情在 Python 中是不愉快的。特别像(a | b; c ) | something >result. 这将并行运行两个进程(输出a作为 的输入b),然后是第三个进程。该序列的输出与并行运行,something并将输出收集到一个名为result. 用任何其他语言来表达都是很复杂的。
(a | b; c ) | something >result
a
b
something
result
特定程序(awk、sed、grep 等)通常可以重写为 Python 模块。不要过火。替换您需要的并改进您的“grep”模块。不要一开始就编写一个 Python 模块来代替“grep”。
最好的事情是您可以分步执行此操作。
os.walk