Python


6
二 12

跳出循环

break,跳出循环。

当遇到需要跳出多重循环的时候,怎么写?break可以跳出多重循环吗?

bash中,可以使用break [n]在控制跳出几重。

PHP中break的用法与bash相似。

对Java不了解,据说可以使用lable来控制跳出层数。

但是在C、及Python中,break似乎只能老老实实的跳出当前循环。多重跳出需求,就只能自己通过程序设计来实现了……


20
一 10

Python for UNIX and Linux System Administrator No.3

第3章 文本

(一)Python的内建功能及模块

str
字符串由一系列字符组成。
字符串类型(str)是一个强大而灵活的、能够对字符串数据进行操作处理的数据类型。

创建字符串

string1 = 'This is a string'
string2 = "This is another string"
string3 = '''This is still another string'''
string4 = """And one more string"""

与Shell、PHP不同的是,Python中,单引号与双引号没有区别,可以替换使用。

注:什么时候用单引号?什么时候用双引号?一般情况没有区别,但是当字符串中有单引号时,则字符号使用双引号;当字符串有有双引号的时候,则字符号使用单引号。这样便不需要转义了。

当字符串跨多行时,可以在单引号或者双引号内使用\n换行。另一个简洁的方法是使用三引号,三引号允许创造多行字符串。

“原始”字符串
创建字符串时,在引号前放置字母r,可以创建一个原始字符串。从根本上讲,创建一个原始字符串与创建一个非原始字符串的区别在于,Python不对原始字符串中的转义字符进行解析,而在处理普通字符串时,则对其进行解析。

转义字符

\
\\
\'
\"
\a  ASCII Bell响铃
\b  ASCII backspace退格
\f
\n
\N{name}
\r
\t
\uxxxx
\Uxxxxxxxx
\v
\ooo  oo八进制值表示的字符
\xhh  hh十六进制表示的字符

来自《Python简明教程》:
Unicode字符串
Unicode是书写国际文本的标准方法。如果你想要用你的母语如北印度语或阿拉伯语写文本,那么你需要有一个支持Unicode的编辑器。类似地,Python允许你处理Unicode文本——你只需要在字符串前加上前缀u或U。例如,u”This is a Unicode string.”。

记住,在你处理文本文件的时候使用Unicode字符串,特别是当你知道这个文件含有用非英语的语言写的文本。

(二)ElementTree

(三)本章小结


26
十二 09

Python for UNIX and Linux System Administrator No.2

第2章 IPython

(一)安装IPython

(1)IPython源代码包可以在 http://ipython.scipy.org/dist/ 下载。
解压之后,有一个setup.py文件,是用python语言写成的安装程序。可以使用带install参数的命令来进行安装:
python setup.py install

(2)当然,假如发行版中已经包含了IPython,那么则可以直接使用系统的包管理系统直接安装。

(3)另外一种安装方式是Python独有 egg 包安装。Egg文件可以通过easy_install工具安装。使用easy_install工具安装IPython,只需要用户对site-package目录具有写权限,直接运行easy_install ipython.egg即可。

关于 egg
egg 是一个包含所有包数据的文件包。在理想情况中,egg 是一个使用 zip 压缩的文件,其中包括了所有需要的包文件。但是在某些情况下,setuptools 会决定(或被开关告知)包不应该是 zip 压缩的。在这些情况下,egg 只是一个简单的未曾压缩的子目录,但是里面的内容是相同的。使用单一的版本可以方便地进行转换,并可以节省一点磁盘空间,但是 egg 目录从功能和组织结构上来说都是相同的。一直使用 JAR 文件的 Java™ 技术的用户会发现 egg 非常熟悉。
引自:http://www.ibm.com/developerworks/cn/linux/l-cppeak3.html

(4)实际上IPthon不必安装即可以使用。源码中的ipython.py文件,就可以启动IPython了。这种方法可以保持site-packages目录简明。(当然因为绿色使然,所以可能需要手动设置一些参数才能完全和“安装”后的使用效果完全一样,比如PYTHONPATH变量)。

(二)基础知识

(三)从功能强大的函数获得帮助

(四)UNIX Shell

(五)信息搜集

(六)自动和快捷方式

(七)本章小结


25
十二 09

Python for UNIX and Linux System Administrator No.1

第一章 Python简介

(一)为什么要选择Python?

Python有哪些优越性或者有什么特性是您需要的?

Python十分容易学习
Python功能强大,可以完成你能想到的任何复杂的任务
Python代码简化方面做的非常出色,代码易维护
Python语言的可读性非常好
Python支持面向对象的编程(OOP)
Python有python社区支持
Python的标准库非常全面,几乎可以完成所有的工作
Python可以方便地获取各种各样的第三方软件包

来自于《简明Python教程》的说法
Python的特色:
简单、易学
免费、开源
解释性
高层语言
面向对象
可移植性
可扩展性
可嵌入性
丰富的库

(二)学习的动力

假如你是Bash或者perl的系统管理员中的一份子,那么完全没有必要担心Python难学。事实上Python被许多人认为是最容易讲授和学习的一门语言。

学习Python,需要的只是学习的动力、好奇心和毅力!

获得人生中的成功需要的专注与坚持不懈多过天才与机会。
                   ——C.W. Wendte

任何人都可以学习编程,具有计算机专业的学位并不是学习Python的必要条件。

(三)一些基础知识

Python像Shell一样,是解释执行的,属于解释型脚本语言。
IPython是Python的一个交互式Shell。IPython的许多特性,在我们学习Python的过程中,很有价值。

(四)在Python中执行命令

Python可以使用模块subprocess,调用系统命令。

#!/usr/bin/env python
import subprocess
subprocess.call(["ls","-l","/usr/bin"])

其中 subprocess.call(["some_comand","some_argument","another_argument_or_path"])
比如
subprocess.call(["ls","-l","/usr/bin"]) 也可以写成
subprocess.call(“ls -l /usr/bin/”, shell=True)

在IPython中获得在线帮助
使用IPython,可以通过tab自动完成功能(与Bash Shell的Tab键自动补齐功能似类)来查看模块中是否有可用的工具。
在IPython中,在一个属性之后输入问号,就会找到该属性的相关信息,而且包含该 属性的文档也会被打印出来。

(五)在Python中使用函数

在Python中,嵌套代码是通过统一的缩进格式来维护的。注意下来例子的缩进(因为WordPress的会自动处理掉半角空格,本来是四个半角空格,换成两个全角的空格了)。


#!/usr/bin/env python
import subprocess

#Command 1
def uname_func():
  uname = "uname"
  uname_arg = "-a"
  print "Gathering system information with %s command:\n" % uname
  subprocess.call([uname, uname_arg])

#Command 2
def disk_func():
  diskspace = "df"
  diskspace_arg = "-h"
  print "Gathering diskspace information %s command:\n" % diskspace
  subprocess.call([diskspace, diskspace_arg])

def main():
  uname_func()
  disk_func()

main()

(六)通过import语句实现代码复用

在python中,一个模块对应一个文件,反之亦然。我们不需要特别指定载入文件的扩展名为.py。即是说,我们模块文件的扩展名必须是.py,并且import的时候能且只能跟不带扩展名的文件名。

模块化编程的关于main()函数的技巧

在程序中不要直接运行main()函数,进行一下判断再运行:


if __name__ == "__main__":
  main()

这样,我们的程序,就可以随意被import,复用其中的函数,而不用担心输出乱七八糟了。

模块的__name__

每个模块都有一个名称,在模块中可以通过语句来找出模块的名称。这在一个场合特别有用——就如前面所提到的,当一个模块被第一次输入的时候,这个模块的主块将被运行。假如我们只想在程序本身被使用的时候运行主块,而在它被别的模块输入的时候不运行主块,我们该怎么做呢?这可以通过模块的__name__属性完成。

#!/usr/bin/python
# Filename: using_name.py

if __name__ == '__main__':
  print 'This program is being run by itself'
else:
  print 'I am being imported from another module'

from..import语句

如果你想要直接输入argv变量到你的程序中(避免在每次使用它时打sys.),那么你可以使用from sys import argv语句。如果你想要输入所有sys模块使用的名字,那么你可以使用from sys import *语句。这对于所有模块都适用。一般说来,应该避免使用from..import而使用import语句,因为这样可以使你的程序更加易读,也可以避免名称的冲突。

–EOF–