init.py
,目錄下可以有零到多個 module。a = set([1, 2, 3, 1]) # 1 不重複
#!/usr/bin/env python # -*- coding: utf-8 -*- def doSome(text): return text + '...processed...' def main(): fixture = 'orz' print(doSome(fixture)) if __name__ == '__main__': main()
# 將 16 進制的 a 轉成 2 進制格式,去掉開頭的 "0b",並將剩下的字符串反向表示。 >>> bin(int("a", 16))[2:][::-1] '0101'
max = lambda m, n: m if m > n else n max(1, 2)
class Account: def __init__(self, number, name, balance = 0): self.number = number self.name = name self.balance = balance
# 可以用此來組合命令行參數。 '{2}, {1}, {0}'.format('a', 'b', 'c')
import re p = re.compile(r'Hello (Kitty)') # group(0) 代表匹配到的全部字串。 print p.match('Hello Kitty').group(0) # group(1) 代表第一個括號內匹配到的字串。 print p.match('Hello Kitty').group(1)
$ cat samply.py import argparse parser = argparse.ArgumentParser() parser.add_argument("target", help="the target architecture") parser.add_argument("-v", "--verbose", help="increase output verbosity", action="store_true") args = parser.parse_args() if (args.verbose): print "verbose: " + args.target else: print args.target $ python sample.py x86
#!/usr/bin/env python import subprocess # 命令執行完之後才會返回。返回 return code。 retcode = subprocess.call('ls -l'.split()) # retcode 非 0 時,丟出異常。只需要返回值的時候適用。 try: retcode = subprocess.check_call('exit 1', shell=True) except subprocess.CalledProcessError as e: print e # retcode 非 0 時,丟出異常。返回 stdout。命令行有 pipe,改以直接調用 shell 執行。 try: stdout = subprocess.check_output('ls -l | wc -l; exit 0', shell=True) except subprocess.CalledProcessError as e: print e # 不用 shell=True,改以 Popen 達成 pipe 效果。前述函式最終皆是調用 Popen。以 ls 的輸出當作 wc 的輸入。 ls = subprocess.Popen('ls -l'.split(), stdout=subprocess.PIPE) wc = subprocess.Popen('wc -l'.split(), stdin=ls.stdout, stdout=subprocess.PIPE) # communicate 傳回 stdout 和 stderr。這裡只取 stdout。 print(wc.communicate()[0]) wc = subprocess.Popen('wc -l'.split(), stdin=subprocess.PIPE, stdout=subprocess.PIPE) print(wc.communicate(input='\n\n\n')[0])