2015年10月16日 星期五

python:正在執行的script如何取得自己的檔案名稱


在python script當中:
  1. 可以用 __file__ 來取得script的檔名
    • 比較新的版本會取得完整路徑,比較舊的版本有可能會取得相對路徑,可以呼叫 os.path.realpath(__file__) 來轉成完整路徑檔名。
  2. 可以用 sys.argv[0] 來取得 script 的檔名
兩者的差別在哪呢? 以下是一例,假設我們寫了一個 main function 如下:
  • A.py
#!/usr/bin/python3
# encoding: utf-8
import sys

def main(argv):
    print(__file__)
    print(argv[0])

if __name__ == '__main__':
    main(sys.argv)
後來,在另一個B.py中,我們發現可以直接使用 A 的 main(本例過於簡化):
  • B.py
#!/usr/bin/python3
# encoding: utf-8
import sys
from A import main


if __name__ == '__main__':
    main(sys.argv)
執行結果,A.py會印出 A.py、A.py,而B.py會印出 A.py、B.py,這就是兩者的差別。在寫重覆使用的模組時,要根據所需要的效果來挑選正確的用法。

沒有留言:

張貼留言