2016年4月28日 星期四

Python OS 模組



下面列出常用的Python指令及其說明,對於初學Python的人而言應當相當有用:

sys模組:

  • argv: 命令列參數。
  • exit([arg]): 結束程式。
  • exitfunc: 若有指定此函式,程式結束前會先呼叫此函式。

getopt模組:

  • getopt(args, options[, long_options]): 解譯命令列參數選項的工具。

os模組:

  • chdir(path): 變更目前工作目錄。
  • getcwd(): 取得目前工作目錄。
  • getenv(varname[, defaultValue]): 取得環境變數。
  • putenv(varname, value): 設定或新增環境變數。
  • popen(command[, mode[, bufsize] ]): 執行某個命令,並將結果以pipe的方式傳會此程式。
  • tmpfile(): 傳回一個新的暫存檔案物件,此物件將以"w+b"的mode開啟。
  • listdir(path): 傳回指定路徑的內容。
  • remove(path): 刪除指定的檔案。
  • removedirs(path): 以遞迴的方式刪除指定的路徑。
  • rename(src, dst): 變更路徑或檔案名稱。
  • renames(old, new): 遞迴的變更路徑或檔案名稱。
  • rmdir(path): 非遞迴的方式移除目錄。
  • stat(path): 傳回指定檔案或路徑的stat結構。
  • walk(top[, topdown=True [, onerror=None] ]): 產生整個目錄的樹狀結構。
  • abort(): 對目前的行程產生SIGABRT的訊號。
  • system(command): 在sub-shell中執行命令。
  • path.abspath(path): 傳回指定目錄的絕對路徑。
  • path.join(a, *p): 將兩個或多個路徑名稱結合成一個路徑。並在適當的地方加上目錄分隔字元。
  • path.exists(path): 檢查檔案或路徑是否存在。
  • path.basename(path): 傳回路徑的最後一個部分。
  • path.dirname(path): 傳回檔案名稱中屬於路徑的部分。
  • path.split(path): 將路徑分割成為各部分。
  • path.splitdrive(path): 分割出檔案名稱中,關於磁碟機的部分。
  • path.splitext(path): 分割出檔案名稱中,關於副檔名的部分。
  • path.splitunc(path): 分割出檔案名稱中屬於UNC的部分。
  • path.getsize(path): 取得指定檔案的大小。
  • path.isfile(path): 檢查指定的路徑是否指向一個檔案。
  • path.isdir(path): 檢查指定的路徑是否為一個目錄。
  • path.isabs(path): 檢查指定的路徑是否為一個絕對路徑。

shutil模組:

  • copy(src, dst): 拷貝src所指定的檔案到dst所指定的檔案中。
  • copytree(src, dst[, symlinks]): 遞迴的方式將整個src所指定的目錄樹拷貝到dst所指定的地方。
  • rmtree(path[, ignore_errors[, onerror] ]): 將整個目錄樹下的所有檔案目錄刪除。
  • move(src, dst): 將整個檔案或目錄搬移到dst所指定的地方。

glob模組:

  • glob(pathname): 依照類似於shell在使用的檔案符合檢驗的格式來找出某個目錄下的檔案。

re模組:

  • re.compile(pattern[, flags]): 將指定的pattern字串編譯並產生RegExp物件。
  • regexp.match(string[, pos[, endpos] ]): 若字串與pattern相符,傳回Match物件,否則傳回None。
  • regexp.search(string[, pos[, endpos] ]): 搜尋字串便找出符合pattern的字串。
  • regexp.split(string[, maxsplit]): 以pattern作為分割字串,將指定的字串分割成為數個部分。
  • regexp.sub(repl, string[, count]): 將相符合的字串取得成為另一個字串。
  • matchObj.group([group1, ...]): 傳回Match物件中的指定群組字串。
  • matchObj.groups(): 傳回所有的Match物件中的群組。
  • matchObj.groupdict(): 傳回所有的Match物件中有取名稱的群組。

2016年4月26日 星期二

Python時間加減


為了要抓高公局的資料,時間格式一直弄不出來,最後感謝強者我同事協助^_^

from datetime import timedelta
import datetime

Start = datetime.datetime(2014,1,1,1,1)
End = datetime.datetime(2014,1,2,0,0)

IntervalTime_minutes = 5
print datetime.timedelta(minutes = IntervalTime_minutes).strftime("%H%M%S")

TimeCount = Start
while TimeCount < End:
    TimeCount = TimeCount + datetime.timedelta(minutes = IntervalTime_minutes)
    print TimeCount.strftime("%Y%m%d_%H%M%S")

      

參考網頁:( google > Python時間加減 )
  1. 設定 someday = datetime.date(2013,10,28)
  2. datetime.timedelta(days = 1) 用於計算 datetime 時間增減(本例:以1天為單位)
  3. 可利用 strftime("%Y%m%d) datetime 控制輸出格式

vi test.py
import time
import datetime

someday = datetime.date(2014,9,20)

while (someday <= datetime.date.today()) :
    # print out with date format : YYYYMMDD, example : 20140920
    print str(someday.strftime("%Y%m%d"))
    someday += datetime.timedelta(days = 1)

print "================="
    
someday = datetime.date.today()

while (someday >= datetime.date(2014,9,15)) :
    # print out with date format : YYYYMMDD, example : 2014-09-20
    print str(someday.strftime("%Y-%m-%d"))
    # minus, timedelta(days = 1)
    someday -= datetime.timedelta(days = 1)

print "================="

someday = datetime.date.today()

while (someday >= datetime.date(2014,9,15)) :
    # print out with date format : YYYYMMDD, example : 2014/09/20
    print str(someday.strftime("%Y/%m/%d"))
    # add, timedelta(days = -1)
    someday += datetime.timedelta(days = -1)

執行結果:
$ python test.py
20140920
20140921
20140922
=================
2014-09-22
2014-09-21
2014-09-20
2014-09-19
2014-09-18
2014-09-17
2014-09-16
2014-09-15
=================
2014/09/22
2014/09/21
2014/09/20
2014/09/19
2014/09/18
2014/09/17
2014/09/16
2014/09/15

延伸閱讀:datetime - Basic date and time types (python.org)

2016年4月25日 星期一

Python 處理時間

因為經常為 Python 處理時間的問題煩惱,所以打算留篇記錄以便之後查閱。
  • 取得今天日期

    import datetime
    today = datetime.date.today()
    # today 是一個 datetime.date object
    

  • 取得現在日期及時間

    import datetime
    current = datetime.datetime.now()
    # current 是一個 datetime.datetime object
    

  • 建立日期

    import datetime
    some_day = datetime.datetime(2008, 12, 25)
    

  • 建立日期及時間

    import datetime
    some_day = datetime.datetime(2008, 12, 25, 12, 0, 0)
    

  • 格式化現在時間

    from time import strftime
    now = strftime('%Y-%m-%d %H:%M:%S')
    # now 是一個 str, '2008-12-29 16:12:34'
    

  • 格式化 datetime.datetime object

    import datetime
    some_day = datetime.datetime(2008, 12, 25)
    print some_day.strftime('%Y-%m-%d')
    # 得到 '2008-12-25'
    

  • datetime.datetime 可以相減(算差距),也可以直接比較

  • 換成 tuple

    import datetime
    now_tuple = datetime.datetime.now().timetuple()
    # now_tuple 會得到一個 tuple
    

  • 取得 timestamp

    import time
    ts = time.time()
    # ts 是一個 timestamp, type 為 float
    

  • 從 timestamp 換回 datetime object

    import time
    import datetime
    ts = time.time()
    dt = datetime.datetime.fromtimestamp(ts)
    

  • 從 time tuple 換成 timestamp

    from time import mktime
    ts = mktime(now_tuple)
    # ts 是 timestamp
Reference : http://pythonly.blogspot.tw/2008/12/python.html