当前位置: 移动技术网 > IT编程>脚本编程>Python > Python 中 os 操作系统接口模块

Python 中 os 操作系统接口模块

2020年07月30日  | 移动技术网IT编程  | 我要评论
Python 中 os 操作系统接口模块1. 与工作路径相关2. 与文件目录相关2.1 查2.2 增2.3 改2.4 删3. 与配置相关1. 与工作路径相关os.chdir(path)将当前工作目录更改为 pathos.getcwd()返回表示当前工作目录的字符串2. 与文件目录相关2.1 查os.listdir(path='.')返回一个列表,该列表包含了 path 中所有文件与目录的名称。该列表按任意顺序排列,并且不包含特殊条目 ‘.’ 和 ‘…’,即使它们确实在目

1. 与工作路径相关

os.chdir(path)

将当前工作目录更改为 path


os.getcwd()

返回表示当前工作目录的字符串


2. 与文件目录相关

2.1 查

os.listdir(path='.')

返回一个列表,该列表包含了 path 中所有文件与目录的名称。该列表按任意顺序排列,并且不包含特殊条目 ‘.’ 和 ‘…’,即使它们确实在目录中存在


os.scandir(path='.')

返回一个迭代出 os.DirEntry 对象的迭代器,这些对象对应于 path 目录中的条目。条目的生成顺序是任意的,特殊条目 ‘.’ 和 ‘…’ 不包括在内。

with os.scandir(path) as it:
    for entry in it:
        print(entry.name)
        print(entry.path)
        print(entry.is_dir())
        print(entry.is_file())
        print(entry.stat())

os.DirEntry 中:

  1. name:本条目的基本文件名,是根据 scandir() 的 path 参数得出的相对路径。
  2. path:本条目的完整路径。
  3. is_dir():如果本条目是目录,或是指向目录的符号链接,则返回 True。如果本条目是文件,或指向任何其他类型的文件,或该文件不再存在,则返回 False。
  4. is_file():如果本条目是文件,或是指向文件的符号链接,则返回 True。如果本条目是目录,或指向目录,或指向其他非文件条目,或该文件不再存在,则返回 False。
  5. stat():返回本条目对应的 stat_result 对象。

os.stat(path + "a.txt")

取文件或文件描述符的状态。在所给路径上执行等效于 stat() 系统调用的操作。path 可以是字符串类型,或(直接/间接由 PathLike 接口返回的) bytes 类型,或打开的文件描述符。返回一个 stat_result 对象。

stat_result 对象的主要参数:

  1. st_mode: 文件模式:包括文件类型和文件模式位(即权限位)。
  2. st_ino: 与平台有关,但如果不为零,则根据 st_dev 值唯一地标识文件。通常:在 Unix 上该值表示索引节点号 (inode number)。在 Windows 上该值表示 文件索引号 。
  3. st_dev: 该文件所在设备的标识符。
  4. st_nlink: 硬链接的数量。
  5. st_uid: 文件所有者的用户 ID。
  6. st_gid: 文件所有者的用户组 ID。
  7. st_size: 文件大小(以字节为单位),文件可以是常规文件或符号链接。符号链接的大小是它包含的路径的长度,不包括末尾的空字节。
  8. st_atime: 最近的访问时间,以秒为单位。
  9. st_mtime: 最近的修改时间,以秒为单位。
  10. st_ctime: 取决于平台: 在 Unix 上表示最近的元数据更改时间, 在 Windows 上表示创建时间,以秒为单位。

2.2 增

os.mkdir(path + "ee", mode=0o777)

创建一个名为 path 的目录,应用以数字表示的权限模式 mode。如果目录已存在,则抛出 FileExistsError 异常。


os.makedirs(path + "aa/aa/aa", mode=0o777, exist_ok=False)

递归目录创建函数。与 mkdir() 类似,但会自动创建到达最后一级目录所需要的中间目录。

2.3 改

os.rename(path + "cc", path + "aa")

将文件或目录 src 重命名为 dst。如果 dst 已存在,则下列情况下将会操作失败,并抛出 OSError 的子类; 在 Windows 上,如果 dst 已存在,则抛出 FileExistsError 异常。


os.renames(path + "aa/aa/aa", path + "bb/bb/bb")

递归重命名目录或文件。工作方式类似 rename(),除了会首先创建新路径所需的中间目录。重命名后,将调用 removedirs() 删除旧路径中不需要的目录。


os.replace(path + "bb/bb/bb/b.txt", path + "bb/bb/bb/b.txt")

将文件或目录 src 重命名为 dst。如果 dst 是目录,将抛出 OSError 异常。如果 dst 已存在且为文件,则在用户具有权限的情况下,将对其进行静默替换。

2.4 删

os.remove(path + "a.txt")

移除(删除)文件 path。如果 path 是目录,则抛出 IsADirectoryError 异常。请使用 rmdir() 删除目录。


os.removedirs(path + "dd")

递归删除目录。工作方式类似于 rmdir(),不同之处在于,如果成功删除了末尾一级目录,removedirs() 会尝试依次删除 path 中提到的每个父目录
该目录下不能有目录和文件,否则会报错


os.rmdir(path + "aa")

移除(删除)目录 path。如果目录不存在或不为空,则会分别抛出 FileNotFoundError 或 OSError 异常。要删除整个目录树,可以使用 shutil.rmtree()。
该目录下不能有目录和文件,否则会报错

3. 与配置相关

os.name

导入的依赖特定操作系统的模块的名称, 以下名称目前已注册: ‘posix’, ‘nt’, ‘java’.


os.fspath(path + "a.txt")

返回路径的文件系统表示。


os.system("python -V")

在子 shell 中执行命令(字符串)


os.getlogin()

返回通过控制终端进程进行登录的用户名。


os.getpid()

返回当前进程 ID


os.getppid()

返回父进程ID。当父进程已经结束,在Unix中返回的ID是初始进程(1)中的一个,在Windows中仍然是同一个进程ID,该进程ID有可能已经被进行进程所占用。


os.cpu_count()

返回系统的 CPU 数量。不确定则返回 None。


os.curdir

操作系统用来表示当前目录的常量字符串。在 Windows 和 POSIX 上是 ‘.’。在 os.path 中也可用。


os.pardir

操作系统用来表示父目录的常量字符串。在 Windows 和 POSIX 上是 ‘…’。在 os.path 中也可用。


os.sep

操作系统用来分隔路径不同部分的字符。在 POSIX 上是 ‘/’,在 Windows 上是是 ‘\’。注意,仅了解它不足以能解析或连接路径,请使用 os.path.split() 和 os.path.join(),但它有时是有用的。在 os.path 中也可用。


os.altsep

操作系统用来分隔路径不同部分的替代字符。如果仅存在一个分隔符,则为 None。在 sep 是反斜杠的 Windows 系统上,该值被设为 ‘/’。在 os.path 中也可用。


os.extsep

分隔基本文件名与扩展名的字符,如 os.py 中的 ‘.’。在 os.path 中也可用。


os.pathsep

操作系统通常用于分隔搜索路径(如 PATH)中不同部分的字符,如 POSIX 上是 ‘:’,Windows 上是 ‘;’。在 os.path 中也可用。


os.defpath

在环境变量没有 ‘PATH’ 键的情况下,execp and spawnp 使用的默认搜索路径。在 os.path 中也可用。


os.linesep

当前平台用于分隔(或终止)行的字符串。它可以是单个字符,如 POSIX 上是 ‘\n’,也可以是多个字符,如 Windows 上是 ‘\r\n’。在写入以文本模式(默认模式)打开的文件时,请不要使用 os.linesep 作为行终止符,请在所有平台上都使用一个 ‘\n’ 代替。


os.devnull

空设备的文件路径。如 POSIX 上为 ‘/dev/null’,Windows 上为 ‘nul’。在 os.path 中也可用。


os.urandom(1)

返回大小为 size 的字符串,它是适合加密使用的随机字节。

本文地址:https://blog.csdn.net/YKenan/article/details/107676588

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网