1. 程式人生 > >Python中的sys模組和os模組

Python中的sys模組和os模組

sys模組

大多屬性描述程式的執行環境,是python中十分重要的基礎模組

  • sys.argv:命令列引數,它是一個列表,不存在argc
    這裡寫圖片描述

for i in sys.argv:
print i
執行結果:
test.py

  • sys.platform
    獲取當前執行環境的平臺

    print sys.platform
    執行結果:
    linux2


win32表示是Windows 32bit作業系統,linux2表示是linux平臺;
  • sys.modules
    一個字典物件, 描述了當前程式都載入了哪些模組(模組名為key, 模組物件為value).

  • sys.version
    Python的版本資訊

print sys.version
輸出:
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]

  • sys.stdin, sys.stdout, sys.stderr
    三個檔案物件. 分別對應標準輸入, 標準輸出, 和標準錯誤

  • sys.path

path是一個目錄列表,供Python從中查詢第三方擴充套件模組。
使用sys.path.append(“mine module path”)來新增自定義的module

  • sys.sys.builtin_module_names
    返回一個列表,包含內建模組的名字。

print sys.sys.builtin_module_names
執行結果:
(‘builtin‘, ‘main‘, ‘_ast’, ‘_codecs’, ‘_sre’, ‘_symtable’, ‘_warnings’, ‘_weakref’, ‘errno’, ‘exceptions’, ‘gc’, ‘imp’, ‘marshal’, ‘posix’, ‘pwd’, ‘signal’, ‘sys’, ‘thread’, ‘zipimport’)

  • sys.byteorder
    返回當前機器的位元組序. 值是 ‘big’ 或者 ‘little’

print sys.byteorder
執行結果:
little

  • sys.executable
    Python解釋權的絕對路徑

print sys,executable
執行結果:
/usr/bin/python2.7

  • sys.exit()
    退出Python

當引數非零時,會引發一個SystemExit異常,我們可以在主程式中捕獲該異常

try:
    sys.exit(1)
except SystemExit:
    print 'SystemExit exit 1'

執行結果:
SystemExit exit 1

  • sys.getrefcount()
    獲取物件的引用計數. 但是得到的結果會比實際的大(因為呼叫函式
    sys.getrefcount()過程中也建立了新的引用).

  • sys.getrecursionlimit()
    獲取Python直譯器的最大遞迴深度

print sys.getrecursionlimit()
執行結果:
1000

  • sys.getsizeof()
    獲取一個物件佔用的記憶體空間大小(位元組數).
def Func():
pass
print sys.getsizeof('aaaa')
print sys.getsizeof(1)
print sys.getsizeof(1.1)
print sys.getsizeof([])
print sys.getsizeof(())
print sys.getsizeof({})
print sys.getsizeof(Func)
print sys.getsizeof(sys)

執行結果:
41
24
24
72
56
280
120
56

os模組

程序資訊:

包含普遍的作業系統功能,它不受平臺限制,如果想要程式與平臺無關,這個模組十分重要。

  • os.getpid(): 獲取程序的pid.
  • os.getppid(): 獲取父程序的pid.
  • os.getuid(): 獲取使用者id.
  • os.getenv(): 按key獲取當前的環境變數.
  • os.putenv(): 按key修改指定的環境變數.
print os.getpid()
print os.getppid()
print os.getuid()
print os.getenv('PATH')

執行結果:
28044
24681
1000
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/sdt/.local/bin:/home/sdt/bin

  • os.uname(): 返回一個五元組, 描述作業系統的詳細資訊
print os.uname()

執行結果:
(‘Linux’, ‘localhost.localdomain’, ‘3.10.0-693.el7.x86_64’, ‘#1 SMP Tue Aug 22 21:09:27 UTC 2017’, ‘x86_64’)

程序管理

  • os.abort():生成一個SIGABRT訊號,一般會終止程序
  • os.exec():程序替換函式族
  • os.fork():建立子程序
  • os.wait()/os.waitpid():程序等待,返回一個元組,表示子程序的pid和退出碼
  • os.kill():發訊號
  • ……

檔案操作

  • os.open(file, flags[, mode]) :開啟file同時根據flags設定變數flags
  • os.close(fd):關閉檔案描述符fd
  • os.read(fd,n):從檔案描述符 fd中讀取最多n個位元組
  • os.write(fd,str):寫入字串到檔案描述符 fd中
  • os.pipe():寫入字串到檔案描述符 fd中
  • os.dup(fd):返回檔案描述符fd的拷貝
  • os.dup2(fd,fd2):使fd2成為fd2的拷貝
  • ……

其他

  • os.getcwd()
    得到當前工作目錄,即當前Python指令碼工作的目錄路徑。
  • os.listdir()
    返回指定目錄下的所有檔案和目錄名。
  • os.remove()
    刪除一個檔案
  • os.system(‘shell命令’)
    執行Shell命令
  • os.name
    指示正在使用的平臺。如果是window 則用’nt’表示,對於Linux/Unix使用者,它是’posix’。
  • os.getloadavg(): 獲取系統負載. 返回一個三元組, 返回最近1分鐘, 5分鐘, 15分鐘的系統負載的值.
    關於系統負載, 其實是描述系統 繁忙程度 的重要指標. 數字越大說明系統就越忙.

os模組中的函式介面很多,後面有時間再補充~