本节介绍 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 部分。