Rumah >pembangunan bahagian belakang >Tutorial Python >Python中os模块的详细介绍(附代码)
本篇文章给大家带来的内容是关于Python中os模块的详细介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
Python的标准库中的os模块包含普遍的操作系统功能。这个模块的作用主要是提供与平台无关的功能。也就是说os模块能够处理平台间的差异问题,使得编写好的程序无需做任何改动就能在另外的平台上运行。当然,这个模块只是提供了一个轻便的方法使用要依赖操作系统的功能。有些特定的功能还得使用特定的模块,比如:如何只是想读或写文件,请使用open();如果想操作文件路径,请使用os.path模块;如果想在命令行中,读入所有文件的所有行,请使用fileinput模块;使用tempfile模块创建临时文件和文件夹;更高级的文件和文件夹处理,请使用shutil模块。如果想要了解os模块的所有内容,可以使用dir(os)方法查看。
模块变量
内建OSError exception的别名。
导入依赖操作系统模块的名字,指示你正在使用的平台。下面是目前被注册的名字:'posix', 'nt', 'mac', 'os2', 'ce', 'java', 'riscos'.
一个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)。
操作系统用此常数字符串作为当前文件夹的引用。
操作系统用此常数字符串作为父文件夹的引用。
系统使用此字符来分割路径。
系统使用另外一个字符来分割路径,如果只有一个分割字符存在,则是None。
分割基本文件名和扩展名的字符。
系统使用此字符来分割搜索路径(像PATH),例如POSIX上':',Windows上的';',也可以通过os.path。
默认的搜索路径用作 execp()和spawnp()如果环境没有 'PATH'。 也可以通过os.path。
当前平台上的换行符字符串. 在POSIX上是'n',或者 在Windows上是'rn' . 不要使用 os.linesep作为换行符,当写入文本文件时 (默认); 使用'n'代替, 在所有平台上。
空设备的文件路径.例如:POSIX上 '/dev/null' . 也可以通过os.path。
使用现在的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是否可执行.
改变当前工作目录。 在unix,Windows中有效。
通过打开的文件描述符改变当前工作目录。在unix中有效,请查看相关文档.。
返回当前工作目录的字符串, 在unix,Windows中有效。
返回一个当前工作目录的Unicode对象。在unix,Windows中有效。
改变根目录为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路径名
Atas ialah kandungan terperinci Python中os模块的详细介绍(附代码). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!