本篇文章帶給大家的內容是關於Python中os模組的詳細介紹(附程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
Python的標準庫中的os模組包含普遍的作業系統功能。這個模組的作用主要是提供與平台無關的功能。也就是說os模組能夠處理平台間的差異問題,使得編寫好的程式無需做任何改動就能在另外的平台上運作。當然,這個模組只是提供了一個輕巧的方法來使用要依賴作業系統的功能。有些特定的功能還得使用特定的模組,例如:如何只是想讀或寫文件,請使用open();如果想操作文件路徑,請使用os.path模組;如果想在命令列中,讀入所有檔案的所有行,請使用fileinput模組;使用tempfile模組建立臨時檔案和資料夾;更進階的檔案和資料夾處理,請使用shutil模組。如果想要了解os模組的所有內容,可以使用dir(os)方法查看。
模組變數
內建OSError exception的別名。
導入依賴作業系統模組的名字,指示你正在使用的平台。以下是目前被註冊的名字:'posix', 'nt', 'mac', 'os2', 'ce', 'java', 'riscos'.
##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.curdir作業系統用此常數字串作為目前資料夾的參考。 os.pardir作業系統用此常數字串作為父資料夾的參考。 os.sep系統使用此字元來分割路徑。 os.altsep系統使用另一個字元來分割路徑,如果只有一個分割字元存在,則是None。 os.extsep分割基本檔案名稱和副檔名的字元。 os.pathsep系統使用此字元來分割搜尋路徑(像PATH),例如POSIX上':',Windows上的';',也可以透過os.path。 os.defpath預設的搜尋路徑用作 execp()和spawnp()如果環境沒有 'PATH'。也可以透過os.path。
os.linesep目前平台上的換行符字串. 在POSIX上是'n',或在Windows上是'rn' . 不要使用os.linesep作為換行符,當寫入文字檔案(預設); 使用'n'代替, 在所有平台上。 os.devnull空裝置的檔案路徑.例如:POSIX上 '/dev/null' . 也可以透過os.path。 檔案和資料夾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.chroot(path)改變根目錄為path。在unix中有效,請查看相關文件。
改变path的mode到数字mode。在unix,Windows中有效。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
*注: *尽管Windows支持chmod(), 你只可以使用它设置只读 flag (通过stat.S_IWRITE和stat.S_IREAD 常数或者一个相对应的整数)。所有其它的 bits都忽略了.
改变path的所属用户和组。在unix中有效,请查看相关文档.。
在unix中有效,请查看相关文档.。
返回path指定的文件夹包含的文件或文件夹的名字的列表。 这个列表以字母顺序。 它不包括 '.' 和'..' 即使它在文件夹中。在unix,Windows中有效。
Changed in version 2.3:在Windows NT/2k/XP 和Unix, 如果文件夹是一个Unicode object, 结果将是 Unicode objects列表。不能解码的文件名将仍然作为string objects返回.
像stat(),但是没有符号链接。 这是stat()的别名 在某些平台上,例如Windows。
创建命名管道。在unix中有效,请查看相关文档.。
创建一个名为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。
从原始的设备号中提取设备major号码 (使用stat中的st_dev或者st_rdev field)。新增version 2.3。
从原始的设备号中提取设备minor号码 (使用stat中的st_dev或者st_rdev field )。新增version 2.3。
以major和minor设备号组成一个原始设备号。新增version 2.3.
以数字mode的mode创建一个名为path的文件夹.默认的 mode 是 0777 (八进制)。 在有些平台上, mode是忽略的. 当使用时。这当前的掩码值是first masked out。 在unix,Windows中有效。也可以用于创建临时文件夹; 查看tempfile模块tempfile.mkdtemp()函数。
递归文件夹创建函数。像mkdir(), 但创建的所有intermediate-level文件夹需要包含子文件夹。抛出一个error exception如果子文件夹已经存在或者不能创建。 默认的 mode 是 0777 (八进制). 在有些平台上, mode是忽略的。当使用时。这当前的掩码值是first masked out。
在unix中有效,请查看相关文档。
在unix中有效,请查看相关文档。
返回符号链接所指向的文件。在unix中有效,请查看相关文档。
删除路径为path的文件。如果path 是一个文件夹,将抛出OSError; 查看下面的rmdir()删除一个 directory。 这和下面的unlink()函数文档是一样的。在Windows,尝试删除一个正在使用的文件将抛出一个exception;在Unix,directory入口会被删除,但分配给文件的存储是无效的,直到原来的文件不再使用。 在unix,Windows中有效。
递归删除directorie。 像rmdir(), 如果子文件夹成功删除, removedirs()才尝试它们的父文件夹,直到抛出一个error(它基本上被忽略,因为它一般意味着你文件夹不为空)。例如, os.removedirs('foo/bar/baz') 将首先删除 'foo/bar/baz', 然后删除 'foo/bar' 和 'foo' 如果它们是空的。 如果子文件夹不能被成功删除,将抛出OSError。
重命名file或者directory src 到dst.如果dst是一个存在的directory, 将抛出OSError. 在Unix, 如果dst在存且是一个file,如果用户有权限的话,它将被安静的替换. 操作将会失败在某些Unix 中如果src和dst在不同的文件系统中. 如果成功, 这命名操作将会是一个原子操作 (这是POSIX 需要). 在 Windows上, 如果dst已经存在, 将抛出OSError,即使它是一个文件。 在unix,Windows中有效。
递归重命名文件夹或者文件。像rename()。新增version 1.5.2.
删除path文件夹. 仅当这文件夹是空的才可以, 否则, 抛出OSError. 要删除整个文件夹树, 可以使用shutil.rmtree(). 在unix,Windows中有效。
执行一个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') print statinfo
如果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中有效。
决定stat_result是否以float对象显示时间戳。
在unix中有效,请查看相关文档.。
创建一个符号链接。在unix中有效,请查看相关文档。
为创建一个临时文件返回一个唯一的path。在Windows使用TMP,依赖于使用的C库。在unix,Windows中有效。
警告: 使用tempnam() 对于symlink攻击是一个漏洞; 考虑使用tmpfile()代替。
为创建一个临时文件返回一个唯一的path。在unix,Windows中有效。
*Warning: *使用tempnam() 对于symlink攻击是一个漏洞; 考虑使用tmpfile()代替.
tmpnam() 将产生唯一名字的最大数值。
删除 file路径. 与remove()相同; 在unix,Windows中有效。
返回指定的path文件的访问和修改的时间。如果时间是 None, 则文件的访问和修改设为当前时间 。 否则, 时间是一个 2-tuple数字, (atime, mtime) 用来分别作为访问和修改的时间。在unix,Windows中有效。
输出在文件夹中的文件名通过在树中游走,向上或者向下。在根目录下的每一个文件夹(包含它自己), 产生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。
返回进程控制终端的文件名。在unix中有效,请查看相关文档.。
返回当前进程有效的group的id。对应于当前进程的可执行文件的"set id "的bit位。在unix中有效,请查看相关文档。
返回当前进程有效的user的id。在unix中有效,请查看相关文档。
返回当前进程当前group的id。在unix中有效,请查看相关文档。
返回当前进程支持的groups的id列表。在unix中有效,请查看相关文档。
傳回進程控制終端登陸使用者的名字。在大多情況下它比使用environment變數LOGNAME來得到用戶名,或使用pwd.getpwuid(os.getuid())[0] 得到當前有效用戶id的登陸名更為有效。在unix中有效,請查看相關文件。
傳回pid進程的group id。如果pid為0,傳回目前進程的group id。在unix中有效,請查看相關文件。
傳回目前進程組的id。在unix中有效,請查看相關文件。
傳回目前進程的id。在unix,Windows中有效。
傳回目前父行程的id。在unix中有效,請查看相關文件。
傳回目前目前進程使用者的id。在unix中有效,請查看相關文件。
傳回environment變數varname的值,如果value不存在,則預設為None。在大多版本的unix,Windows中有效。
設定varname環境變數為value值。此改變影響以os.system(), popen() 或 fork()和execv()啟動的子程序。在大多版本的unix,Windows中有效。
當支援putenv()時,在os.environ分配專案時,自動呼叫適當的putenv()。然而,呼叫putenv() 不會更新os.environ,所以直接設定os.environ的項。
設定目前進程有效群組的id。在unix中有效,請查看相關文件。
設定目前進程有效使用者的id。在unix中有效,請查看相關文件。
設定目前進程組的id。在unix中有效,請查看相關文件。
設定目前程序支援的groups id清單。 groups必須是個列表,每個元素必須是個整數,這個操作只對超級使用者有效,在unix中有效,請查看相關文件。
呼叫system的setpgrp()或setpgrp(0, 0)() ,依賴使用的是哪個版本的system。請查看 Unix手冊. 在unix中有效,請查看相關文件。 os.setpgid(pid, pgrp) 呼叫system的setpgid()設定pid進程group的id為pgrp.請查看 Unix手冊. 在unix中有效,請查看相關文件。
設定目前process當前 和有效的使用者id。在unix中有效,請查看相關文件。
設定目前process目前 和有效的群組id。在unix中有效,請查看相關文件。
呼叫system的getsid()。請查看 Unix手冊. 在unix中有效,請查看相關文件。
呼叫system的setsid()。請查看 Unix手冊. 在unix中有效,請查看相關文件。
設定目前user id。在unix中有效,請查看相關文件。
傳回程式中錯誤code的錯誤訊息。在某些平台上,當給一個未知的code,strerror()回傳NULL,將會拋出ValueError。在unix,Windows中有效。
設定目前權限掩碼,同時傳回先前的權限遮罩。在unix,Windows中有效。
#傳回一個檔案描述符號為fd的開啟的檔案物件。 mode和bufsize參數,和內建的open()函數是同一個意思。在unix,Windows中有效。 mode必須以'r', 'w',或'a'開頭, 否則拋出ValueError。以'a'開頭的mode, 檔案描述符中O_APPEND位元已設定。
#給或從一個command開啟一個管理。傳回一個開啟的連接到管道檔案對象,檔案物件可以讀取或寫入,在於模式是'r'(預設) 或'w',bufsize參數,和內建的open()函數是同一個意思。 command傳回的狀態 (在wait()函數中編碼) 和呼叫檔案物件的close()回傳值一樣, 除非傳回值是0(無錯誤終止), 傳回None 。在unix,Windows中有效。在 2.6版本中已拋棄。使用subprocess模組。
傳回一個開啟的模式為(w b)的檔案物件 .這檔案物件沒有資料夾入口,沒有檔案描述符,會自動刪除。在unix,Windows中有效。
關閉檔案描述子fd. 在unix,Windows中有效。
傳回檔案描述子fd的cope. 在unix,Windows中有效。
複製檔案描述子fd到fd2, 如果有需要先關閉fd2. 在unix,Windows中有效。
改變檔案描述子為fd的檔案 'mode' 為mode.查看chmod()文件 中mode的值。在unix中有效,請查看相關文件。 version 2.6新增。
改变文件描述符为fd的文件的所有者和group的id为uid和gid。 如果不想它们中的一个, 就设置为-1。在unix中有效,请查看相关文档。version 2.6中新增。
强制将文件描述符为fd的文件写入硬盘。不强制更新metadata。在unix中有效,请查看相关文档。注:在MacOS中无效。
返回一个打开的文件的系统配置信息。name为检索的系统配置的值,它也许是一个定义系统值的字符串,这些名字在很多标准中指定(POSIX.1, Unix 95, Unix 98, 和其它)。一些平台也定义了一些额外的名字。这些名字在主操作系统上pathconf_names的字典中。对于不在pathconf_names中的配置变量,传递一个数字作为名字,也是可以接受的。 在unix中有效,请查看相关文档。
如果name是一个字符串或者未知的,将抛出ValueError。如果name是一个特别的值,在系统上不支持,即使它包含在pathconf_names中,将会抛出错误数字为errno.EINVAL的OSError。
返回文件描述符fd的状态,像stat()。在unix,Windows中有效。 os.fstatvfs(fd) 返回包含文件描述符fd的文件的文件系统的信息,像 statvfs()。在unix中有效,请查看相关文档。
强制将文件描述符为fd的文件写入硬盘。在Unix, 将调用fsync()函数;在Windows, 调用 _commit()函数。
如果你准备操作一个Python文件对象f, 首先f.flush(),然后os.fsync(f.fileno()), 确保与f相关的所有内存都写入了硬盘.在unix,Windows中有效。
裁剪文件描述符fd对应的文件, 所以它最大不能超过文件大小。在unix中有效,请查看相关文档。
如果文件描述符fd是打开的,同时与tty(-like)设备相连,则返回true, 否则False。 在unix中有效,请查看相关文档。
设置文件描述符 fd当前位置为pos, how方式修改: SEEK_SET 或者 0 设置从文件开始的计算的pos; SEEK_CUR或者 1 则从当前位置计算; os.SEEK_END或者2则从文件尾部开始. 在unix,Windows中有效。
写入字符串到文件描述符 fd中. 返回实际写入的字符串长度. 在unix,Windows中有效。
*注: *这函数是打算为低层 I/O服务的 ,同时必须应用在os.open()或者pipe()函数返回的文件描述符. 读取内建函数open()或者by popen()或者fdopen(),或者sys.stdin返回的一个“文件对象” , 使用它的read()或者readline()方法
下面的常数是open()函数的 flags参数选项. 它们可以使用 bitwise合并或者operator |
。它们中的一些常数并不是在所有平台都有效. 它们更多使用请查看相关资料。
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新增。
os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回文件名 os.path.commonprefix(list) #返回list(多个路径)中,所有path共有的最长的路径。 os.path.dirname(path) #返回文件路径 os.path.exists(path) #路径存在则返回True,路径损坏返回False os.path.lexists #路径存在则返回True,路径损坏也返回True os.path.expanduser(path) #把path中包含的"~"和"~user"转换成用户目录 os.path.expandvars(path) #根据环境变量的值替换path中包含的”$name”和”${name}” os.path.getatime(path) #返回最后一次进入此path的时间。 os.path.getmtime(path) #返回在此path下最后一次修改的时间。 os.path.getctime(path) #返回path的大小 os.path.getsize(path) #返回文件大小,如果文件不存在就返回错误 os.path.isabs(path) #判断是否为绝对路径 os.path.isfile(path) #判断路径是否为文件 os.path.isdir(path) #判断路径是否为目录 os.path.islink(path) #判断路径是否为链接 os.path.ismount(path) #判断路径是否为挂载点() os.path.join(path1[, path2[, ...]]) #把目录和文件名合成一个路径 os.path.normcase(path) #转换path的大小写和斜杠 os.path.normpath(path) #规范path字符串形式 os.path.realpath(path) #返回path的真实路径 os.path.relpath(path[, start]) #从start开始计算相对路径 os.path.samefile(path1, path2) #判断目录或文件是否相同 os.path.sameopenfile(fp1, fp2) #判断fp1和fp2是否指向同一文件 os.path.samestat(stat1, stat2) #判断stat tuple stat1和stat2是否指向同一个文件 os.path.split(path) #把路径分割成dirname和basename,返回一个元组 os.path.splitdrive(path) #一般用在windows下,返回驱动器名和路径组成的元组 os.path.splitext(path) #分割路径,返回路径名和文件扩展名的元组 os.path.splitunc(path) #把路径分割为加载点与文件 os.path.walk(path, visit, arg) #遍历path,进入每个目录都调用visit函数,visit函数必须有3个参数(arg, dirname, names),dirname表示当前目录的目录名,names代表当前目录下的所有文件名,args则为walk的第三个参数 os.path.supports_unicode_filenames #设置是否支持unicode路径名
以上是Python中os模組的詳細介紹(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!