2.8 os.path.join(path1[, path2[, …]])
1. os模块
os模块提供对操作系统进行调用的接口
方法 | 描述 |
os.access(path, mode) | 检验权限模式 |
os.chdir(path) | 改变当前脚本工作目录,相当于Shell下cd命令 |
os.chflags(path, flags) | 设路径的标记为数字标记 |
os.chmod(path, mode) | 更改权限 |
os.chown(path, uid, gid) | 更改文件所有者 |
os.chroot(path) | 改变当前进程的根目录 |
os.close(fd) | 关闭文件描述符fd |
os.closerange(fd_low, fd_high) | 关闭所有文件描述符,从 fd_low (包含) 到 fd_high (不包含), 错误会忽略 |
os.curdir() | 返回当前目录:(' . ') |
os.dup(fd) | 复制文件描述符 fd |
os.dup2(fd, fd2) | 将一个文件描述符 fd 复制到另一个 fd2 |
os.environ | 获取系统环境变量 |
os.fchdir(fd) | 通过文件描述符改变当前工作目录 |
os.fchmod(fd, mode) | 改变一个文件的访问权限,该文件由参数fd指定,参数mode是Unix下的文件访问权限 |
os.fchown(fd, uid, gid) | 改变一个文件的访问权限,该文件由参数fd指定,参数mode是Unix下的文件访问权限 |
os.fdatasync(fd) | 强制将文件写入磁盘,该文件由文件描述符fd指定,但是不强制更新文件的状态信息。
|
os.fdopen(fd, mode, bufsize) | 通过文件描述符 fd 创建一个文件对象,并返回这个文件对象
|
os.getcwd() | 获取当前工作目录,即当前python脚本工作的目录路径 |
os.isatty(fd) | 如果文件描述符fd是打开的,同时与tty(-like)设备相连,则返回true, 否则False。 |
os.lchmod(path, mode) | 修改连接文件权限 |
os.listdir(path) | 列出指定路径下的所有目录和文件 |
os.linesep | 输出当前平台使用的行终止符。Windwos为"\r\n",Linux为"\n",MAC下为"\r" |
os.mkdir(path) | 只能创建单级目录 |
os.makedirs(path) | 递归创建目录,相当于Shell中mkdir -p |
os.name | 输出字符串指示当前使用平台。Windows为"nt",Linux下为 |
os.pardir | 返回当前目录的父目录字符串名:(' .. ') |
os.pathsep | 输出用于分隔文件路径的字符串。Windows为";",Linux下为 |
os.remove(path) | 删除单个文件,不能删除目录 |
os.removedirs(path) | 递归删除目录(只能删除空目录)。 |
os.rename(src, dst) | 重命名文件或目录 |
os.rmdir(path) | 删除单级目录。若目录不为空则无法删除,相当于Shell中的rmdir |
os.sep | 输出操作系统特定的路径分隔符。Windows下为"\",Linux下为"/" |
os.stat(path) | 获取文件/目录的信息 |
os.system(command) | 运行Shell命令,直接显示 |
os.path.abspath(path) | 返回当前文件规范化的绝对路径 |
os.path.basename(path) | 返回当前路径最后的目录或文件名 |
os.path.dirname(path) | 返回当前路径所在的上级目录 |
os.path.exists(path) | 如果当前路径存在,返回True;否则返回False |
os.path.getatime(path) | 返回当前路径指向的文件或目录的最后访问时间 |
os.path.getctime(path) | 返回当前路径指向的文件或目录的最后修改时间 |
os.path.getgtime(path) | 返回当前路径指向的文件或目录的最后创建时间 |
os.path.isabs(path) | 如果当前路径是绝对路径,返回True;否则返回False |
os.path.isfile(path) | 如果当前路径是一个存在的文件,返回True;否则返回False |
os.path.isdir(path) | 如果当前路径是一个存在的目录,返回True;否则返回False |
os.path.join(path1[, path2[, …]]) | 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 |
os.path.split(path) | 将当前路径分割成目录和文件名的二元组返回 |
注:需导入os模块
import os
1.1 os.chdir(path)
改变当前脚本工作目录,相当于Shell下cd命令
>>> import os
>>> os.chdir('/home/ycy')
>>> os.getcwd()
'/home/ycy'
1.2 os.getcwd()
获取当前工作目录,即当前python脚本工作的目录路径
>>> os.getcwd()
'/home/ycy'
1.3 os.listdir(path)
以列表形式列出指定路径下的所有目录和文件(包括隐藏文件和隐藏目录)
>>> import os
>>> os.listdir('/usr/local')
['bin', 'include', 'etc', 'share', 'games', 'src', 'man', 'lib', 'sbin']
1.4 os.mkdir(path)
只能创建单级目录,不能递归创建多级目录(需调用os.makedirs)。若目录已存在则会报错
>>> os.mkdir('/home/ycy/dir')
>>> os.mkdir('/home/ycy/aa/bb')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: '/home/ycy/aa/bb'
1.5 os.makedirs(path)
递归创建目录,相当于Shell中mkdir -p
>>> import os
>>> os.makedirs('/home/ycy/aa/bb')
1.6 os.remove(path)
删除单个文件,不能删除目录
>>> os.remove('/home/ycy/b.txt')
>>> os.remove('/home/ycy/dir')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IsADirectoryError: [Errno 21] Is a directory: '/home/ycy/dir'
1.7 os.rmdir(path)
删除单级目录。若目录不为空则无法删除,相当于Shell中的rmdir。不能删除文件
>>> os.rmdir('a')
>>> os.rmdir('a.txt')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NotADirectoryError: [Errno 20] Not a directory: 'a.txt'
1.8 os.removedirs(path)
递归删除目录(只能删除空目录)。
>>> os.removedirs('/home/ycy/dir')
>>> os.removedirs('/home/ycy/aa/bb')
1.9 os.rename(src, dst)
重命名文件或目录(可以为相对路径或绝对路径)
>>> os.rename('c.txt','a.txt')
>>> os.rename('a','ccc')
1.10 os.curdir
返回当前目录:' . '
>>> os.curdir
'.'
1.11 os.pardir
返回当前目录的父目录字符串名:(' .. ')
>>> os.pardir
'..'
1.12 os.linesep
输出当前平台使用的行终止符。Windwos为"\r\n",Linux为"\n",MAC下为"\r"
>>> os.linesep
'\n'
1.13 os.name
输出字符串指示当前使用平台。Windows为"nt",Linux下为"posix"
>>> os.name
'posix'
1.14 os.pathsep
输出用于分隔文件路径的字符串。Windows为";",Linux下为":"
>>> os.pathsep
':'
1.15 os.sep
输出操作系统特定的路径分隔符。Windows下为"\",Linux下为"/"
>>> os.sep
'/'
1.16 os.stat(path)
获取文件/目录的信息
>>> os.stat('.')
os.stat_result(st_mode=16877, st_ino=3014658, st_dev=2049, st_nlink=22,
st_uid=1000, st_gid=1000, st_size=4096, st_atime=1564910200,
st_mtime=1564910382, st_ctime=1564910382)
1.17 os.system(command)
可以运行Shell命令,直接显示。0表示命令执行成功,非0表示执行失败
>>> os.system('echo 123')
123
0
2. os.path模块
os.path模块属于os的子模块,用于获取文件的属性。
2.1 os.path.abspath(path)
>>> os.path.abspath('.') #.表示当前目录
'/home/ycy'
2.2 os.path.dirname(path)
返回当前路径所在的上级目录
>>> os.path.dirname('home/ycy/a.py')
'home/ycy'
2.3 os.path.basename(path)
返回当前路径最后的目录或文件名
>>> os.path.basename('home/ycy/a.py')
'a.py'
2.4 os.path.exists(path)
如果当前路径存在,返回True;否则返回False
>>> os.path.exists('/etc/passwd')
True
>>> os.path.exists('/etc/ansible')
False
2.5 os.path.isabs(path)
如果当前路径是绝对路径,返回True;否则返回False
>>> os.path.isabs('/home/ycy/Desktop')
True
2.6 os.path.isfile(path)
如果当前路径是一个存在的文件,返回True;否则返回False
>>> os.path.isfile('/etc/passwd')
True
2.7 os.path.isdir(path)
如果当前路径是一个存在的目录,返回True;否则返回False
>>> os.path.isdir('/home/ycy')
True
2.8 os.path.join(path1[, path2[, …]])
将多个路径组合后返回,第一个绝对路径之前的参数将被忽略(中间的分隔符在Windows上为\,在Linux上为/,也就是调用了os.sep方法)
>>> os.path.join("home","ycy","Desktop")
'home/ycy/Desktop'
2.9 os.path.split(path)
将当前路径分割成目录和文件名的二元组返回
>>> os.path.split('/etc/ssh/sshd_config')
('/etc/ssh', 'sshd_config')