這個模組提供了一個輕便的方法使用要依賴作業系統的功能。 如何你只是想讀或寫檔案,請使用open()
,如果你想操作檔案路徑,請使用os.path模組,如果你想在命令列中,讀入所有檔案的所有行,請使用
fileinput模組。使用tempfile模組建立臨時檔案和資料夾,更高階的檔案和資料夾處理,請使用shutil模組。

os.error
內建OSError exception的別名。

os.name
匯入依賴作業系統模組的名字。下面是目前被註冊的名字:’posix’, ‘nt’, ‘mac’, ‘os2’, ‘ce’, ‘java’, ‘riscos’.

下面的function和data項是和當前的程序和使用者有關

os.environ
一個mapping物件表示環境。例如,environ[‘HOME’] ,表示的你自己home資料夾的路徑(某些平臺支援,windows不支援)
,它與C中的getenv(“HOME”)一致。

這個mapping物件在os模組第一次匯入時被建立,一般在python啟動時,作為site.py處理過程的一部分。在這一次之後改變environment不
影響os.environ,除非直接修改os.environ.

注:putenv()不會直接改變os.environ,所以最好是修改os.environ

注:在一些平臺上,包括FreeBSD和Mac OS X,修改environ會導致記憶體洩露。參考 putenv()的系統文件。

如果沒有提供putenv(),mapping的修改版本傳遞給合適的建立過程函式,將導致子過程使用一個修改的environment。

如果這個平臺支援unsetenv()函式,你可以刪除mapping中的專案。當從os.environ使用pop()或clear()刪除一個專案時,unsetenv()會自動被呼叫(版本2.6)。

os.chdir(path)
os.fchdir(fd)
os.getcwd()
這些函式在 Files和 Directories中。

os.ctermid()
返回程序控制終端的檔名。在unix中有效,請檢視相關文件.。
os.getegid()
返回當前程序有效的group的id。對應於當前程序的可執行檔案的”set id “的bit位。在unix中有效,請檢視相關文件.。
os.geteuid()
返回當前程序有效的user的id。在unix中有效,請檢視相關文件.。
os.getgid()
返回當前程序當前group的id。在unix中有效,請檢視相關文件.。
os.getgroups()
返回當前程序支援的groups的id列表。在unix中有效,請檢視相關文件.。
os.getlogin()
返回程序控制終端登陸使用者的名字。在大多情況下它比使用environment變數LOGNAME來得到使用者名稱,或使用pwd.getpwuid(os.getuid())[0] 得到當前有效使用者id的登陸名更為有效。在unix中有效,請檢視相關文件.。

os.getpgid(pid)
返回pid程序的group id.如果pid為0,返回當前程序的group id。在unix中有效,請檢視相關文件.。

os.getpgrp()
返回當前程序組的id.在unix中有效,請檢視相關文件.。

os.getpid()
返回當前程序的id.在unix,Windows中有效。

os.getppid()
返回當前父程序的id.在unix中有效,請檢視相關文件.。
os.getuid()
返回當前當前程序使用者的id.在unix中有效,請檢視相關文件.。
os.getenv(varname[, value])
返回environment變數varname的值,如果value不存在,預設為None.在大多版本的unix,Windows中有效。

os.putenv(varname, value)

設定varname環境變數為value值。此改變影響以os.system(), popen() 或 fork()和execv()啟動的子程序。在大多版本的unix,Windows中有效。

當支援putenv()時,在os.environ分配專案時,自動呼叫合適的putenv()。然而,呼叫putenv() 不會更新os.environ,所以直接設定os.environ的項。

os.setegid(egid)
設定當前程序有效組的id.在unix中有效,請檢視相關文件.。

os.seteuid(euid)
設定當前程序有效使用者的id.在unix中有效,請檢視相關文件.。
os.setgid(gid)
設定當前程序組的id.在unix中有效,請檢視相關文件.。
os.setgroups(groups)
設定當前程序支援的groups id列表。groups必須是個列表,每個元素必須是個整數,這個操作只對超級使用者有效,在unix中有效,請檢視相關文件.。

os.setpgrp()
呼叫system的setpgrp()或setpgrp(0, 0)() ,依賴於使用的是哪個版本的system. 請檢視 Unix手冊. 在unix中有效,請檢視相關文件.。
os.setpgid(pid, pgrp)
呼叫system的setpgid()設定pid程序group的id為pgrp.請檢視 Unix手冊. 在unix中有效,請檢視相關文件.。
os.setreuid(ruid, euid)
設定當前process當前 和有效的使用者id. 在unix中有效,請檢視相關文件.。
os.setregid(rgid, egid)
設定當前process當前 和有效的組id. 在unix中有效,請檢視相關文件.。
os.getsid(pid)
呼叫system的getsid(). 請檢視 Unix手冊. 在unix中有效,請檢視相關文件.。

os.setsid()
呼叫system的setsid().請檢視 Unix手冊. 在unix中有效,請檢視相關文件.。
os.setuid(uid)
設定當前user id. 在unix中有效,請檢視相關文件.。

os.strerror(code)
返回程式中錯誤code的錯誤資訊。在某些平臺上,當給一個未知的code,strerror()返回NULL,將丟擲ValueError。在unix,Windows中有效。
os.umask(mask)
設定當前許可權掩碼,同時返回先前的許可權掩碼。在unix,Windows中有效。

os.fdopen(fd[, mode[, bufsize]])
返回一個檔案描述符號為fd的開啟的檔案物件。mode和bufsize引數,和內建的open()函式是同一個意思。在unix,Windows中有效。
mode必須以’r’, ‘w’,或者’a’開頭, 否則丟擲ValueError.

以’a’開頭的mode, 檔案描述符中O_APPEND位已設定.

os.popen(command[, mode[, bufsize]])
給或從一個command開啟一個管理。返回一個開啟的連線到管道檔案物件,檔案物件可以讀或寫,在於模式是’r’(預設) 或’w’,bufsize引數,和內建的open()函式是同一個意思。 command返回的狀態 (在wait()函式中編碼) 和呼叫檔案物件的close()返回值一樣, 除非返回值是0(無錯誤終止), 返回None . 在unix,Windows中有效。

在 2.6版本中已拋棄. 使用subprocess模組.

os.tmpfile()
返回一個開啟的模式為(w+b)的檔案物件 .這檔案物件沒有資料夾入口,沒有檔案描述符,將會自動刪除. 在unix,Windows中有效。

從 version 2.6起: 所有的popen*()函式已拋棄. 使用subprocess模組.

os.popen2(cmd[, mode[, bufsize]])

os.popen3(cmd[, mode[, bufsize]])

os.popen4(cmd[, mode[, bufsize]])

16.1.3. 檔案描述符操作
這些函式操作使用檔案描述符引用的I/O stream。
檔案描述符是與當前程序開啟的檔案相對應的一些小整數. 例如標準輸入的通常檔案描述符中 0, 標準輸出是1,標準錯誤是 2. 程序開啟的更多檔案將被分配為3, 4, 5,等. 這“檔案描述符”有一點迷惑性;在Unix平臺上, socket和pipe 通常也使用檔案描述符引用.

os.close(fd)
關閉檔案描述符fd. 在unix,Windows中有效。

這函式是為低層的I/O服務的,應用在os.open()或 pipe()返回的檔案描述符上。關閉一個由內建函式open()或 popen()或fdopen()開啟的檔案物件,使用close()方法。
os.closerange(fd_low, fd_high)
關閉從fd_low(包含)到fd_high(不包含)所有的檔案描述符,忽略錯誤。在unix,Windows中有效。
等同於:
for fd in xrange(fd_low, fd_high):
try:
os.close(fd)
except OSError:
pass

os.dup(fd)
返回檔案描述符fd的cope. 在unix,Windows中有效。
os.dup2(fd, fd2)
複製檔案描述符fd到fd2, 如果有需要首先關閉fd2. 在unix,Windows中有效。
os.fchmod(fd, mode)
改變檔案描述符為fd的檔案’mode‘為mode. 檢視chmod()文件 中mode的值. 在unix中有效,請檢視相關文件.。

version 2.6中新增.

os.fchown(fd, uid, gid)
改變檔案描述符為fd的檔案的所有者和group的id為uid和gid. 如果不想它們中的一個, 就設定為-1. 在unix中有效,請檢視相關文件.。

version 2.6中新增.

os.fdatasync(fd)
強制將檔案描述符為fd的檔案寫入硬碟. 不強制更新metadata. 在unix中有效,請檢視相關文件.。

注:在MacOS中無效.

os.fpathconf(fd, name)
返回一個開啟的檔案的系統配置資訊。name為檢索的系統配置的值,它也許是一個定義系統值的字串,這些名字在很多標準中指定(POSIX.1, Unix 95, Unix 98, 和其它)。一些平臺也定義了一些額外的名字。這些名字在主作業系統上pathconf_names的字典中。對於不在pathconf_names中的配置變數,傳遞一個數字作為名字,也是可以接受的。 在unix中有效,請檢視相關文件.。

如果name是一個字串或者未知的,將丟擲ValueError。如果name是一個特別的值,在系統上不支援,即使它包含在pathconf_names中,將會丟擲錯誤數字為errno.EINVAL的OSError。

os.fstat(fd)
返回檔案描述符fd的狀態,像stat()。在unix,Windows中有效。
os.fstatvfs(fd)
返回包含檔案描述符fd的檔案的檔案系統的資訊,像 statvfs(). 在unix中有效,請檢視相關文件.。
os.fsync(fd)
強制將檔案描述符為fd的檔案寫入硬碟.在Unix, 將呼叫fsync()函式;在Windows, 呼叫 _commit()函式.

如果你準備操作一個Python檔案物件f, 首先f.flush(),然後os.fsync(f.fileno()), 確保與f相關的所有記憶體都寫入了硬碟.在unix,Windows中有效。

os.ftruncate(fd, length)
裁剪檔案描述符fd對應的檔案, 所以它最大不能超過檔案大小. 在unix中有效,請檢視相關文件.。
os.isatty(fd)
如果檔案描述符fd是開啟的,同時與tty(-like)裝置相連,則返回true, 否則False. 在unix中有效,請檢視相關文件.。
os.lseek(fd, pos, how)
設定檔案描述符 fd當前位置為pos, how方式修改: SEEK_SET 或者 0 設定從檔案開始的計算的pos; SEEK_CUR或者 1 則從當前位置計算; os.SEEK_END或者2則從檔案尾部開始. 在unix,Windows中有效。
os.open(file, flags[, mode])
開啟file同時根據flags設定變數flags ,如果有mode,則設定它的mode. 預設的mode是 0777 (八進位制), 當前掩碼值是first masked out. 返回剛開啟的檔案描述符. 在unix,Windows中有效。

flag和mode值, 請檢視C執行時文件; flag常數(像O_RDONLY and O_WRONLY)在這個模組中也定義了(在下面).

注:這函式是打算為低層 I/O服務的.正常的使用,使用內建函式open(),返回read()和 write() 等方法建立的檔案物件.包裝檔案描述符為“檔案物件”, 使用fdopen().

os.openpty()
在一些Unix平臺上有效,請檢視相關文件.

os.pipe()
建立一個管道. 返回一對檔案描述符(r, w) 分別為讀和寫. 在unix,Windows中有效。
os.read(fd, n)
從檔案描述符 fd中讀取最多n個位元組. 返回包含讀取位元組的string. 檔案描述符 fd對應檔案已達到結尾, 返回一個空string. 在unix,Windows中有效。

注:這函式是打算為低層 I/O服務的 ,同時必須應用在os.open()或者pipe()函式返回的檔案描述符. 讀取內建函式open()或者by popen()或者fdopen(),或者sys.stdin返回的一個“檔案物件” , 使用它的read()或者readline()方法.

os.tcgetpgrp(fd)
在unix中有效,請檢視相關文件.。
os.tcsetpgrp(fd, pg)
在unix中有效,請檢視相關文件.。
os.ttyname(fd)
在unix中有效,請檢視相關文件.。
os.write(fd, str)
寫入字串到檔案描述符 fd中. 返回實際寫入的字串長度. 在unix,Windows中有效。

注:這函式是打算為低層 I/O服務的 ,同時必須應用在os.open()或者pipe()函式返回的檔案描述符. 讀取內建函式open()或者by popen()或者fdopen(),或者sys.stdin返回的一個“檔案物件” , 使用它的read()或者readline()方法.

下面的常數是open()函式的 flags引數選項. 它們可以使用 bitwise合併或者operator |. 它們中的一些常數並不是在所有平臺都有效. 它們更多使用請檢視相關資料,在unix上參考open(2)手冊頁面,windows上http://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx.

os.O_RDONLY
os.O_WRONLY
os.O_RDWR
os.O_APPEND
os.O_CREAT
os.O_EXCL
os.O_TRUNC
這些常數在Unix and Windows上有效.
os.O_DSYNC
os.O_RSYNC
os.O_SYNC
os.O_NDELAY
os.O_NONBLOCK
os.O_NOCTTY
os.O_SHLOCK
os.O_EXLOCK
這些常數僅在Unix上有效.
os.O_BINARY
os.O_NOINHERIT
os.O_SHORT_LIVED
os.O_TEMPORARY
os.O_RANDOM
os.O_SEQUENTIAL
os.O_TEXT
這些常數僅在 Windows上有效.
os.O_ASYNC
os.O_DIRECT
os.O_DIRECTORY
os.O_NOFOLLOW
os.O_NOATIME
這些常數是 GNU擴充套件,如果沒有在C庫宣告剛沒有.
os.SEEK_SET
os.SEEK_CUR
os.SEEK_END
lseek()函式的引數. 它們的值分別是 0, 1,和 2. 在Unix and Windows上有效.

版本2.5新增.

16.1.4. 檔案和資料夾
os.access(path, mode)
使用現在的uid/gid嘗試訪問path. 注大部分操作使用有效的uid/gid, 因此執行環境可以在 suid/sgid環境嘗試,如果使用者有權訪問path. mode為F_OK,測試存在的path,或者它可以是包含R_OK, W_OK和X_OK或者R_OK, W_OK和X_OK其中之一或者更多.如果允許訪問返回 True , 否則返回False. 檢視Unix手冊access(2) 獲取更多資訊. 在unix,Windows中有效。

注:使用access()去測試使用者是否授權. 在實際使用open()開啟一個檔案前測試會建立一個安全漏洞前 , 因為使用者會利用這短暫時間在檢測和開啟這個檔案去修改它.

注:即使access()表明它將succeed,但I/O 操作也可能會失敗, 如網路檔案系統.

os.F_OK
作為access()的mode引數,測試path是否存在.
os.R_OK
包含在access()的mode引數中 , 測試path是否可讀.
os.W_OK
包含在access()的mode引數中 ,測試path是否可寫.
os.X_OK
包含在access()的mode引數中 ,測試path是否可執行..
os.chdir(path)
改變當前工作目錄. 在unix,Windows中有效。

os.fchdir(fd)
在unix中有效,請檢視相關文件.。
os.getcwd()
返回當前工作目錄的字串, 在unix,Windows中有效。
os.getcwdu()
返回一個當前工作目錄的Unicode物件. 在unix,Windows中有效。
os.chflags(path, flags)
在unix中有效,請檢視相關文件.。

os.chroot(path)
在unix中有效,請檢視相關文件.。

os.chmod(path, mode)
改變path的mode到數字mode. mode為下面中的一個 (在stat模組中定義)或者bitwise或者它們的組合:

?stat.S_ISUID
?stat.S_ISGID
?stat.S_ENFMT
?stat.S_ISVTX
?stat.S_IREAD
?stat.S_IWRITE
?stat.S_IEXEC
?stat.S_IRWXU
?stat.S_IRUSR
?stat.S_IWUSR
?stat.S_IXUSR
?stat.S_IRWXG
?stat.S_IRGRP
?stat.S_IWGRP
?stat.S_IXGRP
?stat.S_IRWXO
?stat.S_IROTH
?stat.S_IWOTH
?stat.S_IXOTH
在unix,Windows中有效。

注:儘管Windows支援chmod(), 你只可以使用它設定只讀 flag (通過stat.S_IWRITE和stat.S_IREAD 常數或者一個相對應的整數)。所有其它的 bits都忽略了.

os.chown(path, uid, gid)
在unix中有效,請檢視相關文件.。
os.lchflags(path, flags)
在unix中有效,請檢視相關文件.。

新增version 2.6.

os.lchmod(path, mode)
在unix中有效,請檢視相關文件.。

新增version 2.6.

os.lchown(path, uid, gid)
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.link(source, link_name)
在unix中有效,請檢視相關文件.。
os.listdir(path)
返回path指定的資料夾包含的檔案或資料夾的名字的列表. 這個列表以字母順序. 它不包括 ‘.’ 和’..’ 即使它在資料夾中. 在unix,Windows中有效。

Changed in version 2.3:在Windows NT/2k/XP 和Unix, 如果資料夾是一個Unicode object, 結果將是 Unicode objects列表. 不能解碼的檔名將仍然作為string objects返回.

os.lstat(path)
像stat(),但是沒有符號連結. 這是stat()的別名 在某些平臺上,例如Windows.
os.mkfifo(path[, mode])
在unix中有效,請檢視相關文件.。

os.mknod(filename[, mode=0600, device])
建立一個名為filename檔案系統節點(檔案,裝置特別檔案或者命名pipe)。 mode指定建立或使用節點的許可權, 組合 (或者bitwise) stat.S_IFREG, stat.S_IFCHR, stat.S_IFBLK, 和stat.S_IFIFO (這些常數在stat模組). 對於 stat.S_IFCHR和stat.S_IFBLK, 裝置定義了 最新建立的裝置特殊檔案 (可能使用 os.makedev()),其它都將忽略.

新增version 2.3.

os.major(device)
從原始的裝置號中提取裝置major號碼 (使用stat中的st_dev或者st_rdev field).

新增version 2.3.

os.minor(device)
從原始的裝置號中提取裝置minor號碼 (使用stat中的st_dev或者st_rdev field ).

新增version 2.3.

os.makedev(major, minor)
以major和minor裝置號組成一個原始裝置號.

新增version 2.3.

os.mkdir(path[, mode])
以數字mode的mode建立一個名為path的資料夾.預設的 mode 是 0777 (八進位制). 在有些平臺上, mode是忽略的. 當使用時。這當前的掩碼值是first masked out. 在unix,Windows中有效。

也可以建立臨時資料夾; 檢視tempfile模組tempfile.mkdtemp()函式.

os.makedirs(path[, mode])
遞迴資料夾建立函式。像mkdir(), 但建立的所有intermediate-level資料夾需要包含子資料夾. 丟擲一個error exception如果子資料夾已經存在或者不能建立. 預設的 mode 是 0777 (八進位制). 在有些平臺上, mode是忽略的.當使用時。這當前的掩碼值是first masked out。

注:
makedirs()變得迷惑 如果路徑元素包含os.pardir.
現在可以正確處理 UNC路徑.

os.pathconf(path, name)
在unix中有效,請檢視相關文件.。

os.pathconf_names
在unix中有效,請檢視相關文件.。
os.readlink(path)
在unix中有效,請檢視相關文件.。

os.remove(path)
刪除路徑為path的檔案.如果path 是一個資料夾,將丟擲OSError; 檢視下面的rmdir()刪除一個 directory. 這和下面的unlink()函式文件是一樣的.在Windows,嘗試刪除一個正在使用的檔案將丟擲一個exception;在Unix,directory入口會被刪除,但分配給檔案的儲存是無效的,直到原來的檔案不再使用. 在unix,Windows中有效。
os.removedirs(path)
遞迴刪除directorie. 像rmdir(), 如果子資料夾成功刪除, removedirs()才嘗試它們的父資料夾,直到丟擲一個error(它基本上被忽略,因為它一般意味著你資料夾不為空).例如, os.removedirs(‘foo/bar/baz’) 將首先刪除 ‘foo/bar/baz’, 然後刪除 ‘foo/bar’ 和 ‘foo’ 如果它們是空的. 如果子資料夾不能被成功刪除,將丟擲OSError .

新增version 1.5.2.

os.rename(src, dst)
重新命名file或者directory src 到dst.如果dst是一個存在的directory, 將丟擲OSError. 在Unix, 如果dst在存且是一個file,如果使用者有許可權的話,它將被安靜的替換. 操作將會失敗在某些Unix 中如果src和dst在不同的檔案系統中. 如果成功, 這命名操作將會是一個原子操作 (這是POSIX 需要). 在 Windows上, 如果dst已經存在, 將丟擲OSError,即使它是一個檔案. 在unix,Windows中有效。
os.renames(old, new)
遞迴重新命名資料夾或者檔案。像rename()

新增version 1.5.2.

os.rmdir(path)
刪除path資料夾. 僅當這資料夾是空的才可以, 否則, 丟擲OSError. 要刪除整個資料夾樹, 可以使用shutil.rmtree(). 在unix,Windows中有效。
os.stat(path)
執行一個stat()系統呼叫在給定的path上. 返回值是一個物件,屬性與stat結構成員有關: st_mode (保護位), st_ino (inode number), st_dev (device), st_nlink (number of hard links), st_uid (所有使用者的id), st_gid (所有者group id), st_size (檔案大小, 以位為單位), st_atime (最近訪問的時間), st_mtime (最近修改的時間), st_ctime (依賴於平臺;在Unix上是metadata最近改變的時間,或者在 Windows上是建立時間):

import os
statinfo = os.stat(‘somefile.txt’)
statinfo
(33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732)
statinfo.st_size
926L

如果stat_float_times()返回True,time值是floats,以second進行計算. 一秒的小數部分也會顯示出來, 如果系統支援. 在Mac OS, 時間常常是 floats.檢視 stat_float_times() 獲取更多資訊.

在一些Unix系統上(例如 Linux), 下面的屬性也許是有效的: st_blocks (為檔案分配了多少塊), st_blksize (檔案系統blocksize), st_rdev (裝置型號如果是一個inode裝置). st_flags (使用者為檔案定義的flags).

在unix,Windows中有效。

os.stat_float_times([newvalue])
決定stat_result是否以float物件顯示時間戳.

os.statvfs(path)
在unix中有效,請檢視相關文件.。

os.symlink(source, link_name)
在unix中有效,請檢視相關文件.。
os.tempnam([dir[, prefix]])
為建立一個臨時檔案返回一個唯一的path。在Windows使用TMP . 依賴於使用的C庫;
警告:
使用tempnam() 對於symlink攻擊是一個漏洞; 考慮使用tmpfile()代替.

在unix,Windows中有效。

os.tmpnam()
為建立一個臨時檔案返回一個唯一的path.
Warning:
使用tempnam() 對於symlink攻擊是一個漏洞; 考慮使用tmpfile()代替.

在unix,Windows中有效。

os.TMP_MAX
tmpnam() 將產生唯一名字的最大數值.
os.unlink(path)
刪除 file路徑. 與remove()相同; 在unix,Windows中有效。
os.utime(path, times)
返回指定的path檔案的訪問和修改的時間。如果時間是 None, 則檔案的訪問和修改設為當前時間 。 否則, 時間是一個 2-tuple數字, (atime, mtime) 用來分別作為訪問和修改的時間.
在unix,Windows中有效。

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
輸出在資料夾中的檔名通過在樹中游走,向上或者向下.在根目錄下的每一個資料夾(包含它自己), 產生3-tuple (dirpath, dirnames, filenames)【資料夾路徑, 資料夾名字, 檔名】.

dirpath是一個字串, directory的路徑. dirnames在dirpath中子資料夾的列表 (不包括 ‘.’ ‘..’). filenames 檔案是在dirpath不包含子資料夾的檔名的列表. 注: 列表中的names不包含path.為獲得dirpath中的一個檔案或者資料夾的完整路徑 (以頂目錄開始)或者, 操作 os.path.join(dirpath, name).

如果optional引數topdown為True或者not指定, 一個directory的3-tuple將比它的任何子資料夾的3-tuple先產生 (directories 自上而下).如果topdown為 False, 一個directory的3-tuple將比它的任何子資料夾的3-tuple後產生 (directories 自下而上)。

當topdown為True,呼叫者可以修改列表中列出的資料夾名字(也可以使用del或者slice), walk() 僅僅遞迴每一個包含在dirnames中的子資料夾; 可以減少查詢, 利用訪問的特殊順序,或者甚至 告訴 walk() 關於資料夾的建立者或者重新命名在它重新walk()之前.修改檔名當topdown 為False時是無效的, 因為在bottom-up模式中在dirnames中的directories比dirpath 它自己先產生 .

預設listdir()的errors將被忽略. 如果optional引數onerror被指定,它應該是一個函式; 它呼叫時有一個引數, 一個OSError例項. 報告這錯誤後,繼續walk,或者丟擲exception終止walk.注意filename是可用的的 ,exception物件的filename屬性.

預設, walk() 不會進入符號連結 .

新增version 2.6:

注:如果你傳入一個相對的pathname, 不要在walk()執行過程中改變當前資料夾. walk()不會改變改前資料夾, 同時確保它的呼叫者也不會改變.

import os
from os.path import join, getsize
for root, dirs, files in os.walk(‘python/Lib/email’):
print root, “consumes”,
print sum(getsize(join(root, name)) for name in files),
print “bytes in”, len(files), “non-directory files”
if ‘CVS’ in dirs:
dirs.remove(‘CVS’) # don’t visit CVS directories

Delete everything reachable from the directory named in “top”,

assuming there are no symbolic links.

CAUTION: This is dangerous! For example, if top == ‘/’, it

could delete all your disk files.

import os
for root, dirs, files in os.walk(top, topdown=False):
for name in files:
os.remove(os.path.join(root, name))
for name in dirs:
os.rmdir(os.path.join(root, name))
新增version 2.3.

使用函式來建立和管理程序。
使用 exec*() 函式使用arguments列表來載入新程式. 在每個例子, 一個使用者敲入一個命令列中的第一個引數傳遞給程式作為它自己的名字而不是作為引數. 對於C 程式設計師來說, 它是傳遞給main()的argv[0]. 例如, os.execv(‘/bin/echo’, [‘foo’, ‘bar’]) 將僅僅在標準輸出上列印bar; foo 將被忽略.

os.abort()
產生一個SIGABRT標識到當前的程序.在Unix,這預設的行為是產生一個主要的dump;在Windows,這程序立即返回退出以一個狀態碼為3. 程式使用signal.signal()來註冊一個SIGABRT 將導致不同的行為. 在unix,Windows中有效。
os.execl(path, arg0, arg1, …)
os.execle(path, arg0, arg1, …, env)
os.execlp(file, arg0, arg1, …)
os.execlpe(file, arg0, arg1, …, env)
os.execv(path, args)
os.execve(path, args, env)
os.execvp(file, args)
os.execvpe(file, args, env)
這些函式將執行一個新程式, 替換當前程序; 他們沒有返回.在Unix,新的執行體載入到當前的程序, 同時將和當前的呼叫者有相同的id. 將報告Errors 當丟擲 OSError時.

當前的程序立即被替代. 開啟檔案物件和描述符不會被重新整理, 如果在這些開啟的檔案中有資料緩衝區, 應該在呼叫exec*() 函式之前,使用sys.stdout.flush()或者os.fsync()flush它們 .

在unix,Windows中有效。

os._exit(n)
使用狀態n退出系統,沒有呼叫清理函式,重新整理緩衝區。 在unix,Windows中有效。

注:標準退出的方法是sys.exit(n). _exit()一般使用於fork()產生的子程序中.

os.EX_OK
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.EX_USAGE
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.EX_DATAERR
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.EX_NOINPUT
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.EX_NOUSER
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.EX_NOHOST
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.EX_UNAVAILABLE
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.EX_SOFTWARE
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.EX_OSERR
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.EX_OSFILE
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.EX_CANTCREAT
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.EX_IOERR
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.EX_TEMPFAIL
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.EX_PROTOCOL
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.EX_NOPERM
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.EX_CONFIG
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.EX_NOTFOUND
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.fork()
在unix中有效,請檢視相關文件.。

os.forkpty()
在一些unix中有效,請檢視相關文件
os.kill(pid, sig)
在unix中有效,請檢視相關文件.。

os.killpg(pgid, sig)
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.nice(increment)
在unix中有效,請檢視相關文件.。
os.plock(op)
在unix中有效,請檢視相關文件.。
os.popen(…)
os.popen2(…)
os.popen3(…)
os.popen4(…)
執行子程序, 返回交流的開啟的管道.這些函式在前面建立檔案物件時介紹過.
os.spawnl(mode, path, …)
os.spawnle(mode, path, …, env)
os.spawnlp(mode, file, …)
os.spawnlpe(mode, file, …, env)
os.spawnv(mode, path, args)
os.spawnve(mode, path, args, env)
os.spawnvp(mode, file, args)
os.spawnvpe(mode, file, args, env)
在新程序中執行程式path
(請使用subprocess模組)

如果模式是 P_NOWAIT, 返回新程序的id;如果模式是P_WAIT,返回程序退出時的狀態碼。 如果正常退出,或者-signal, 當 signal 是killed.在 Windows, 程序id實際上是process的handle,所它可以使用於waitpid()函式.

import os
os.spawnlp(os.P_WAIT, ‘cp’, ‘cp’, ‘index.html’, ‘/dev/null’)

L = [‘cp’, ‘index.html’, ‘/dev/null’]
os.spawnvpe(os.P_WAIT, ‘cp’, L, os.environ)
在unix,Windows中有效。

新增version 1.6.

os.P_NOWAIT
os.P_NOWAITO
spawn*()族函式引數mode的可選值. 如果給出其中任一個值, 新程序一建立完成,spawn*()函式將立即返回 ,返回程序id的值. 在unix,Windows中有效。

新增version 1.6.

os.P_WAIT
spawn*()族函式引數mode的可能值. 如果將它賦值給mode, spawn*() 函式不返回,直接執行結束 以及如果執行成功 ,將返回程序的退出碼,或者如果 signal殺掉了這個程序,將返回-signal. 在unix,Windows中有效。

新增version 1.6.

os.P_DETACH
os.P_OVERLAY
spawn*()族函式引數mode的可選值。P_DETACH和P_NOWAIT很相似,但是新程序依附在呼叫程序的console上。如果使用了P_OVERLAY,當前程序將被替換,spawn*()函式將無返回 。在Windows上有效。
新增version 1.6.

os.startfile(path[, operation])
以相關的程式開啟檔案.

當operation沒有指定或者’open’, 這操作就像在Windows Explorer雙擊檔案,或者將這個檔案作為互動命令列中start命令的引數:與檔案擴充套件相關的程式開啟檔案。

當指定另外操作時, 它必須是“command verb” 它指定應該對檔案做什麼.像Microsoft的’print’ ‘edit’ (作用在檔案上) ‘explore’ and ‘find’ (作用在資料夾上).

startfile()只要相關的應該程式一啟動就返回。 沒有選項等待應用程式關閉, 沒有方法接收應用程式退出的狀態. path引數與當前directory相關. 如果你想使用一個絕對路徑,確保第一個字元不是 (‘/’)。 使用os.path.normpath() 函式確保路徑對於win32來說是正確的. 在Windows上有效.

新增version 2.0.

新增version 2.5: The operation parameter.

os.system(command)
在shell中執行string命令. 這是使用標準C函式system(), 有同樣的限制. 例如改變 sys.stdin, 不影響命令執行環境.

在Unix, 請檢視相當文件.

在Windows, 返回值是在 shell執行命令的返回值。

在unix,Windows中有效。

subprocess模組提供了一個更強大的功能產生新程序和接收它們的結果;

os.times()
返回一個5-tuple的浮點數字, 表示(處理器或者其它)累積時間, 以秒為單位. items為:使用者時間, 系統time, 子使用者time, 子系統time, 和從過去一個固定的點真實流逝的時間. 在unix,Windows中有效。在Windows, 僅僅填充開始兩項, 其它都為0.
os.wait()
在unix中有效,請檢視相關文件.。
os.waitpid(pid, options)
Unix:等待一個指定的pid的子程序完成, 返回一個tuple返回它的程序id和退出狀態 . 一般情況下option設為0.

更強細請檢視相關文件

在Windows: 等待一個指定的pid的程序完成, 返回一個tuple返回它的程序id和退出狀態向左移動了8位 。 如果pid小於或等於0沒有特別的意思,將丟擲exception. integer options 沒有任何影響. pid 可以指向任何程序的id,不一定是子程序的id.

os.wait3([options])
在unix中有效,請檢視相關文件.。

新增version 2.5.

os.wait4(pid, options)
在unix中有效,請檢視相關文件.。

新增version 2.5.

os.WNOHANG
在unix中有效,請檢視相關文件.。
os.WCONTINUED
在某些unix中有效,請檢視相關文件.。

新增version 2.3.

os.WUNTRACED
在unix中有效,請檢視相關文件.。

os.WCOREDUMP(status)
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.WIFCONTINUED(status)
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.WIFSTOPPED(status)
在unix中有效,請檢視相關文件.。
os.WIFSIGNALED(status)
在unix中有效,請檢視相關文件.。
os.WIFEXITED(status)
在unix中有效,請檢視相關文件.。
os.WEXITSTATUS(status)
在unix中有效,請檢視相關文件.。
os.WSTOPSIG(status)
在unix中有效,請檢視相關文件.。
os.WTERMSIG(status)
在unix中有效,請檢視相關文件.。
16.1.6. Miscellaneous System Information
os.confstr(name)
在unix中有效,請檢視相關文件.。

os.confstr_names
在unix中有效,請檢視相關文件.。
os.getloadavg()
在unix中有效,請檢視相關文件.。

新增version 2.3.

os.sysconf(name)
在unix中有效,請檢視相關文件.。

os.curdir
作業系統用此常數字符串作為當前資料夾的引用。
os.pardir
作業系統用此常數字符串作為父資料夾的引用。
os.sep
系統使用此字元來分割路徑。
os.altsep
系統使用另外一個字元來分割路徑,如果只有一個分割字元存在,則是None.
os.extsep
分割基本檔名和副檔名的字元。

新增version 2.2.

os.pathsep
系統使用此字元來分割搜尋路徑(像PATH),例如POSIX上’:’,Windows上的’;’,也可以通過os.path
os.defpath
預設的搜尋路徑用作 exec*p*()和spawn*p*()如果環境沒有 ‘PATH’. 也可以通過os.path.
os.linesep
當前平臺上的換行符字串. 在POSIX上是’\n’,或者 在Windows上是’\r\n’ . 不要使用 os.linesep作為換行符,當寫入文字檔案時 (預設); 使用’\n’代替, 在所有平臺上.
os.devnull
空裝置的檔案路徑.例如:POSIX上 ‘/dev/null’ . 也可以通過os.path.

新增version 2.4.

16.1.7. 其它 函式
os.urandom(n)
返回n個隨機byte值的string,作為加密使用