Python中模块之os的功能介绍
Python中模块之os的功能介绍
1. os的变量
-
path
模块路径
方法:os.path 返回值:module 例如:print(os.path) >>> <module 'ntpath' from 'D:\\python3.5.2\\lib\\ntpath.py'> #返回posixpath和netpath两个模块中任意一个模块
-
name
模块名
方法:os.name 返回值:str 例如:print(os.name) >>> nt #返回posix nt和ce任意一个模块名
-
curdir
当前目录字符串
方法:os.curdir 返回值:str 例如:print(os.curdir) >>> . #返回一个字符串代表当前目录,一般为.和:
-
pardir
父级目录字符串
方法:os.pardir 返回值:str 例如:print(os.pardir) >>> .. #返回一个字符串代表上一级目录,一般为..和::
-
sep
路径分隔符
方法:os.sep 返回值:str 例如:print(os.sep) >>> \\ #返回最常用的路径分隔符,一般为/ : 和 \\
-
extsep
延伸路径分隔符
方法:os.extsep 返回值:str 例如:print(os.extsep) >>> . #返回延伸路径分隔符,一般为.
-
altsep
备用路径分隔符
方法:os.altsep 返回值:str 例如:print(os.altsep) >>> / #返回备用路径分隔符,一般为None和/
-
pathsep
环境变量中的路径分隔符
方法:os.pathsep 返回值:str 例如:print(os.pathsep) >>> ; #返回环境变量中的路径分隔符
-
linesep
文件中的路径分隔符
方法:os.linesep 返回值:str 例如:print(os.linesep) >>> \r\n #返回文件路径分隔符,一般为\r \n和\r\n
-
defpath
可执行文件的默认搜索路径
方法:os.defpath 返回值:str 例如:print(os.defpath) >>> .;C:\\bin #返回可执行文件的默认搜索路径
-
devnull
空设备的文件路径
方法:os.devnull 返回值:str 例如:print(os.devnull) >>> nul #返回空设备的文件路径
-
environ
以字典的形式获取当前系统的环境变量
方法:os.environ 返回值:os._Environ #获取当前系统的环境变量,以字典key:value的形式返回
2. os的方法
-
abort
立即中断解释器
方法:os.abort() 返回值:None #直接关闭解释器并退出Python解释器
-
access
利用真实的uid和gid对访问路径测试
方法:os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)
-
chdir
更改当前目录到指定目录
方法:os.chdir(path) 返回值:None #直接把当前目录切换到指定目录下
-
chmod
更改文件的访问权限
方法: os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)
-
close
关闭一个文件的描述符
方法:os.close(fd)
-
closerange
关闭所有文件的描述符,从低到高,忽略错误
方法:os.closerange(fd_low,fd_high)
-
cpu_count
cpu数量
方法:os.cpu_count() 返回值:int 例如:print(os.cpu_count()) >>> 4 #返回当前系统中cpu的数量,如果无法确定将返回None
-
device_encoding
终端文件描述符编码的字符串
方法:os.device_encoding(fd)
-
dup
返回一个文件描述符的复制品
方法:os.dup(fd)
-
dup2
复制文件描述符
方法:os.dup2(fd,fd2,inheritable=True)
- execl
- execle
- execlp
- execlpe
- execve
- execvp
- execvpe
- fdopen
- fsdecode
- fsencode
- fstat
- fsync
- ftruncate
- getexecpath
- gethandleinheritable
- get_inheritable
- getterminalsize
-
getcwd
获取当前路径
方法:os.getcwd() 返回值:str 例如:print(os.getcwd()) >>> C:\\Users\\Administrator
-
getcwdb
获取当前路径,以字节格式返回
方法:os.getcwdb() 返回值:bytes 例如:print(os.getcwd()) >>> b'C:\\Users\\Administrator'
- getenv
-
getlogin
返回当前登陆的用户名
方法:os.getlogin() 返回值:str 例如:print(os.getlogin()) >>> qiao
-
getpid
返回当前进程id
方法:os.getpid() 返回值:int
-
getppid
返回上级进程id
方法:os.getppid() 返回值:int
-
isatty
判断文件是否是一个终端设备
-
kill
用信号结束指定id的进程
-
link
创建一个链接文件
方法:os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)
-
listdir
把目录下的文件名和目录名作为列表的元素返回
方法:os.listdir(path=None) 返回值:list #默认处理当前目录,当然也可以指定其他路径
- lseek
-
lstat
把文件的属性信息以元祖的形式返回
方法:os.lstat(path, *, dir_fd=None) 返回值:os.stat_result
-
makedirs
递归创建文件夹
方法:os.makedirs(name, mode=511, exist_ok=False)
-
mkdir
创建一个文件夹
方法:os.mkdir(path, mode=511, *, dir_fd=None)
- open
- pipe
- popen
-
putenv
增加一个环境变量
方法:os.putenv(name,value)
- read
- readlink
-
remove
删除一个文件
方法:os.remove(path, *, dir_fd=None) #只能删文件,不能删目录
-
removedirs
递归删除空目录
方法:os.removedirs(name)
-
raname
重命名
方法:os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None) #如果文件路径不一样则为移动文件
-
ranames
超级重命名
方法:os.ranames(old,new) #可以吧整个文件夹包含文件夹内的所有文件都直接移动到其他路径或者直接修改该文件夹名
-
replace
重命名一个文件或目录,存在则覆盖
方法:os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None) #当目录下有文件时,则文件也一起被移动
-
rmdir
删除一个空目录
方法:os.rmdir(path, *, dir_fd=None) #当目录不为空时,则程序报错
- scandir
- sethandleinheritable
- set_inheritable
- spawnl
- spawnle
- spawnv
- startfile
-
stat
以元祖形式返回文件属性
方法:os.stat(path, *, dir_fd=None, follow_symlinks=True) 返回值:os.stat_result
- statfloattimes
- strerror
- symlink
-
system
调用系统命令
方法:os.system(command) #与直接在系统中执行命令一样
-
times
以元祖的形式返回一个收集的时间
方法:os.times()
-
truncate
截取文件的长度
方法:os.truncate(path,length) #从文件的开头开始截取,多余的部分直接删除
- umask
-
unlink
删除一个文件
方法:os.unlink(path, *, dir_fd=None) #该方法功能与remove一样
- urandom
-
utime
修改文件的最后访问时间和修改时间
方法:os.utime(path, times=None, *, ns=None, dir_fd=None, follow_symlinks=True)
- waitpid
- walk
- write
path类
1. path的变量
1. altsep备用路径分隔符
2. curdir当前目录字符串表示
3. defpath可执行文件默认搜索路径
4. devnull空设备到文件路径,一般为nul
5. extsep延伸路径分隔符
6. pardir上级目录字符串表示
7. pathsep环境变量中的路径分隔符
8. sep路径分隔符
注:由于os模块中的变量包含上述变量,因此具体介绍可参考os变量。
2. path的方法
-
abspath
获取路径的绝对路径
方法:os.path.abspath(path) 返回值:str 例如:print(os.path.abspath(r'users')) >>> C:\Users\Administrator\users #该方法需要指定路径,当指定的路径不存在时也不会影响该方法的执行。
-
basename
返回路径的最后一部分
方法:os.path.basename(path) 返回值:str 例如:print(os.path.basename(r'd:\users')) >>> 'users' 例如:print(os.path.basename(r'd:\users\11.txt')) >>> '11.txt' #该方法获取指定路径的最后一部分,不管最后一部分是文件名还是目录名,当指定的路径不存在时也不会影响该方法的执行。
- commonpath
- commonprefix
-
dirname
获取除去路径最后一部分的所有路径
方法:os.path.dirname(path) 返回值:str 例如:print(os.path.dirname(r'a:\b\c\11.xx')) >>> a:\b\c #该方法刚好与basename相反,具体参考basename方法。
-
exists
判断路径是否存在
方法:os.path.exists(path) 返回值:bool 例如:print(os.path.exists(r'c:\1')) >>> False #只有当指定路径存在时,才会返回True。
- expanduser
- expandvars
-
getatime
获取文件最后访问时间
方法:os.path.getatime(filename) 返回值:int 例如:print(os.path.getatime(r'd:\users\11.txt')) >>> 1506439442.2703443 #该方法利用os.stat方法来获取文件属性里面的最后访问时间,由于返回值为一个时间戳,因此需要用time模块中ctime方法来转换为时间字符串格式。
-
getctime
获取文件的创建时间
方法:os.path.getctime(filename) 返回值:int 例如:print(os.path.getctime(r'd:\users\11.txt')) >>> 1506431925.714422 #该方法同getatime方法类似,可以参考getatime方法。
-
getmtime
获取文件的最后修改时间
方法:os.path.getctime(filename) 返回值:int 例如:print(os.path.getmtime(r'd:\users\11.txt')) >>> 1506439442.2703443 #该方法同getatime方法类似,可以参考getatime方法。
-
getsize
获取文件大小
方法:os.path.getsize(filename) 返回值:int 例如:print(os.path.getsize(r'd:\users\11.txt')) >>> 30 #该方法获取文件的大小,以字节为单位,同样利用os.stat方法获取文件属性。
-
isabs
判断是否是绝对路径
方法:os.path.isabs(path) 返回值:bool 例如:print(os.path.isabs('d:\12.x')) >>> True #在windows中该方法的判断依据为:以及:前面的一个字母,字母取值范围为从a到z中的任意一个字母。
-
isdir
判断路径是否是一个目录
方法:os.path.isdir(path) 返回值:bool 例如:print(os.path.isdir(r'd:\users')) >>> True #当指定路径不存在时,程序不会报错,将会返回False
-
isfile
判断路径是否是一个文件
方法:os.path.isfile(path) 返回值:bool 例如:print(os.path.isfile(r'd:\users')) >>> False #当指定路径不存在时,程序不会报错,将会返回False
-
islink
判断路径是否是一个符号链接
方法:os.path.islink(path) 返回值:bool
-
ismount
判断路径是否是一个挂载点
方法:os.path.ismount(path) 返回值:bool
-
join
合并多个路径
方法:os.path.join(path,*paths) 返回值:str 例如:print(os.path.join(r'd:\u','a.xx')) >>> d:\u\a.xx #该方法有局限性,一般用于多个路径合并时,传入的参数需要满足一个条件后面的参数是前面参数的子路径。否则合并将出现混乱,但不会报错。
- lexists
- normcase
- normpath
-
realpath
返回路径的真实路径
方法:os.path.realpath(path) 返回值:str #该方法等于abspath方法。
-
relpath
获取路径的相对路径
方法:os.path.relpath(path,start=None) 返回值:str 例如:print(os.path.relpath(r'a\b\c')) >>> a\b\c #当输入的路径为相对路径时,则返回的结果和输入的路径一样 例如:print(os.path.relpath(r'\a\b\c')) ... ..\..\a\b\c #当输入的路径前面有\时,则返回的相对路径会以..表示上级目录 例如:print(os.path.relpath(r'm:\a\b\c',start='m:')) >>> a\b\c #当输入的是绝对路径时,如果起始盘不是c盘时,需要指定起始盘
-
samefile
判断两个路径指定的是否是同一个文件
方法:os.path.samefile(f1,f2) 返回值:bool #该方法可以理解为判断f1和f2是否是绝对路径和相对路径。
-
sameopenfile
判断打开的两个文件对象是否是同一个文件
方法:os.path.sameopenfile(fp1,fp2) 返回值:bool #该方法需要用到文件描述符
- samestat
-
split
分割路径
方法:os.path.split(path) 返回值:tuple 例如:print(os.path.split(r'c:\a\b\c')) >>> ('c:\\a\\b','c') #该方法相当于把dirname与basename两个方法作为元祖的两个元素,当路径不存在时,程序不报错,最后一个路径分隔符后面的路径无论是目录还是文件都将作为元祖的第二个元素。
- splitdrive
-
splitext
分割路径与文件
方法:os.path.split.ext(path) 返回值:tuple 例如:print(os.path.splitext(r'd:\a\b')) >>> ('d:\\a\\b','') #该方法相当于split的升级,当路径最后面的路径是目录时,元祖的第二个元素将为空字符串,否则则返回文件名。
- splitunc