探秘不同寻常的Python程序

开发 后端
本文的主要目标是向习惯于使用 Bash、PHP 或其它某种语言编写脚本过程代码的人介绍面向对象的 Python 开发,并帮助他们转换到面向对象的 Python 开发。

Python 在近年来的受欢迎程度剧增,部分原因在于该语言非常灵活,同时功能非常强大。Python 可用于系统管理、Web 开发、GUI 编程、科学计算等等。

Python 的这种日益流行性意味着,对于目前使用其他编程语言的开发人员,除了使用他们最喜欢的语言之外,他们还可以采用 Python 来完成某些项目。 过程式编程当然有其用武之地,并且可能是解决某个问题的高度有效的方法。在非常基本的层次上,过程式编程可定义为指令的列表。

Bash 和 PHP 通常就是以这样的方式编写的。然而由于 Python 的流行,对于作为 Web 开发人员或系统管理员的 PHP 和 Bash 脚本编写人员,他们正陷入必须同时学习面向对象的编程和 Python 的境地。 面向对象这个概念很难一次性地掌握,因此本文采用过程式 Bash 和 PHP 脚本,并首先将它们转换为过程式 Python。作为最后一步。

它们将转换为面向对象的 Python 这个终结目标。本文在结束时将简略讨论一下面向对象的 Python 的一些优点,然后在最后讨论一些可能更适合采用过程或函数式编程的一些不利场景。到本文结束时,Bash 或 PHP 程序员应该能够毫无畏惧地一头扎进面向对象的 Python 项目。 #t#

如果您以前没有听说过函数式编程,我强烈建议您阅读参考资料部分中的一些有关函数式编程的文章。不过简而言之,可以将函数式编程描述为“分发函数”。通常,与面向对象的编程相比。

函数式编程是表达某个想法的更简洁和更清楚的方法。 采用 PHP 和 Bash 编写磁盘监视函数虽然 PHP 主要是为了在浏览器中运行,但是也可以通过 exec 函数执行系统调用。

采用 PHP 编写的第一个示例将捕获 Shell 命令“df –h”的输出,将输出放在一个数组中,然后根据一个正则表达式检查输出的每一行。如果该行与正则表达式匹配,则打印该行。如果您希望从主目录运行此示例,只需将此脚本命名为 index.php,并将其放在 Apache/mod_php 服务器的对外服务

  1. <html> 
  2. <body> 
  3. <?php 
  4.  
  5. //Analyzes disk usage  
  6. //Takes regex pattern and message  
  7. function disk_space( $pattern="/2[0-9]%/", $message="CAPACITY WARNING:" )  
  8.  
  9. {  
  10.     exec(escapeshellcmd("df -h"),$output_lines,$return_value);  
  11.     foreach ($output_lines as $output) {  
  12.         if (preg_match( $pattern, $output ))  
  13.             echo "<b>$message</b> $output <br />";  
  14.  
  15.     }  
  16. }  
  17.  
  18. disk_space()  
  19.  
  20. ?> 
  21. </body> 
  22. </html> 

查看该代码,可以看到正则表达式模式被设置为匹配某个包含 20-29% 的行。可以容易地修改此模式以适应其他标志,例如 90-99%,因为 20% 是非常低的磁盘容量。 下面让我们看一下如何在 Bash 函数中完成同样的事情。

在 Bash 中,该问题要容易解决得多,因为您实际上是在处理系统调用。在此示例中,您甚至不需要使用数组或正则表达式库,因为使用到 grep 的管道容易多了。不过,在 Bash 中设置函数的缺省参数始终有点麻烦。

责任编辑:chenqingxiang 来源: 博客园
相关推荐

2009-12-31 10:13:24

ADO.NET参数

2010-02-07 14:54:13

Android

2010-03-01 17:53:22

Python应用程序

2022-10-11 14:39:18

泄露数据数据安全

2021-06-07 09:20:56

Javascript运算符开发

2013-01-23 15:00:14

Googler程序员

2017-05-02 08:09:26

Python重启机制

2020-12-03 06:19:52

程序员经济职场

2020-12-23 10:44:21

网络安全新基建漏洞

2023-11-28 11:19:19

2010-03-01 18:26:25

Python

2011-09-19 13:34:59

FacebookwebOS

2021-12-29 06:24:16

AI审稿人工智能

2021-02-26 10:39:01

Linux漏洞开源

2010-03-10 10:03:10

Python对象体系

2024-01-02 10:13:59

人工智能神经网络

2010-02-06 16:02:57

Android 应用程

2021-08-10 08:33:29

iOS 14.8苹果iOS 15

2020-11-25 11:32:18

物联网人工智能技术

2011-12-01 10:10:23

点赞
收藏

51CTO技术栈公众号