本节介绍 os 模块创建 file 对象的函数
os.fdopen(fd[, mode[, bufsize]])
用文件描述符打开文件,返回一个连接到 fd 的打开的文件对象,参数 mode 和 bufsize 与Python内置函数 open() 的对应参数含义相同,如果 fdopen() 抛出异常, fd 对应的文件处于未关闭的状态。
适用于: Unix, Windows.
Changed in version 2.3: 如果指定了参数 mode ,那么该参数必须以‘r‘、‘w‘或‘a‘之一开头,否则抛出异常 ValueError
Changed in version 2.5: 在 Unix 上,如果参数 mode 以 ‘a‘ 开头,则会在文件描述字上设置 O_APPEND 标志。
os.tmpfile()
以更新模式(w+b)返回一个新的临时文件对象,该文件没有路径入口,一旦文件描述字丢失,该文件会被自动删除。
适用于: Unix, Windows.
- 弃用声明
- 下面的所有函数都已过时,使用 subprocess 模块!
- os.popen(command[, mode[, bufsize]])
- 打开一个连接到(从/到)参数 command 的管道,返回一个打开的文件对象,该对象连接到管道,管道的读写属性由参数 mode 指定——‘r‘ (默认) 或 ‘w‘。
- 参数 bufsize 与内置函数open()的对应参数作用相同,参数 command 的退出状态(以 wait() 中指定的格式编码) 可以用作文件对象的 close() 方法的返回值,返回状态为0(正常退出)除外,此时返回None。
- 适用于: Unix, Windows.
- 下面是一些过时的 popen*() 函数,用来创建子进程并执行命令
- 下面三个函数的参数 bufsize 指示管道的I/O缓冲大小;参数 mode 应该是 ‘b‘ 或 ‘t‘,在 Windows 上需要该选项来判断文件对象是以字节还是文本格式打开,默认为 ‘t‘。在 Unix 上参数 cmd 可能是一个 sequence,也就是说参数直接传给程序而不需要 shell 的干预(同 os.spawnv()). 如果参数 cmd 是一个字符串,它将被传给 shell (同 os.system())。
- 这些方法都无法获取子进程的退出状态,想要同时控制输入、输出和获取返回值需要使用 subprocess 模块。
- 关于使用这些函数可能引起的死锁,详见 Flow Control Issues。
- os.popen2(cmd[, mode[, bufsize]])
- 作为子进程执行 cmd ,返回 file 对象 (child_stdin, child_stdout).
- 适用于: Unix, Windows.
- os.popen3(cmd[, mode[, bufsize]])
- 作为子进程执行 cmd ,返回 file 对象 (child_stdin, child_stdout, child_stderr)
- 适用于: Unix, Windows.
- os.popen4(cmd[, mode[, bufsize]])
- 作为子进程执行 cmd ,返回 file 对象 (child_stdin, child_stdout_and_stderr).
- 适用于: Unix, Windows.
- 注
- child_stdin、child_stdout 和 child_stderr 是从子进程的角度命名的,因此他们分别是子进程的标准输入、标准输出和标准错误。
- 弃用声明
- 最后四个函数已经过时,使用 subprocess 模块。详细查阅 Replacing Older Functions with the subprocess Module 部分。
时间: 2024-10-13 11:27:54