學來學去,我才發現,最基礎的東西幾乎已是無所不能,為啥還去雜亂無章的學這學那?踏踏實實的從標準庫學起吧~
今天是os
os.rename:重新命名
os.remove:刪除檔案
os.listdir:用元組列出目錄下的所有檔案/目錄
os.getcwd:獲得當前路徑
os.chdir:改變路徑
os.mkdirs:建立目錄層
os.removedirs:刪除所給路徑中最後一個目錄下所有的空目錄;rmdir和mkdir函數只能處理單個目錄級;
os.stat:處理檔案屬性。它返回一個類元組對象(stat_result對象, 包含 10 個元素), 依次是st_mode (許可權模式), st_ino (inode number), st_dev (device), st_nlink (number of hard links), st_uid (所有者使用者識別碼), st_gid (所有者所在組 ID ), st_size (檔案大小, 位元組), st_atime (最近一次訪問時間), st_mtime (最近修改時間), st_ctime (平台相關; Unix下的最近一次中繼資料/metadata修改時間, 或者 Windows 下的建立時間) - 以上項目也可作為屬性訪問.
os.chmod:修改許可權屬性
os.utime:修改時間屬性
os.system:在當前進程下執行一個新命令, 並等待它完成。命令通過作業系統的標準 shell 執行, 並返回 shell 的退出狀態;直接將命令傳遞給 shell , 所以如果你不檢查傳入參數的時候會很危險,如果不確定參數的安全性, 那麼最好使用EXEC或spawn代替;
os.exec:函數會使用新進程替換當前進程(或者說是"轉到進程")使用 os 模組啟動新進程
File: os-exec-example-1.py
import os
import sys
program = "python"
arguments = ["hello.py"]
print os.execvp(program, (program,) + tuple(arguments))
print "goodbye"
hello again, and welcome to the show
Python 提供了很多表現不同的exec函數。execvp函數, 它會從標準路徑搜尋執行程式, 把第二個參數(元組)作為單獨的參數傳遞給程式, 並使用當前的環境變數來運行程式. 其他七個同類型函數請參閱 Python Library Reference .
在 Unix 環境下, 你可以通過組合使用 exec
, fork
以及 wait
函數來從當前程式調用另一個程式, 如 Example 1-36 所示. fork
函數複製當前進程, wait
函數會等待一個子進程執行結束
使用 os 模組調用其他程式 (Unix)
File: os-exec-example-2.py
import os
import sys
def run(program, *args):
pid = os.fork()
if not pid:
os.execvp(program, (program,) + args)
return os.wait()[0]
run("python", "hello.py")
print "goodbye"
hello again, and welcome to the show
goodbye
fork 函數在子進程返回中返回 0 (這個進程首先從 fork
傳回值), 在父進程中返回一個非 0 的進程標識符(子進程的 PID ). 也就是說, 只有當我們處於子進程的時候 "not pid
" 才為真.
fork
和 wait
函數在 Windows 上是停用, 但是你可以使用 spawn
函數, 不過, spawn
不會沿著路徑搜尋可執行檔, 你必須自己處理好這些.