一. 简介
前面文章简单学习了 Python3 中 OS模块中的文件/目录的部分函数。
本文继续来学习 OS 模块中文件、目录的操作方法:os.pipe() 方法、os.popen() 方法。
二. Python3 OS模块中的文件/目录方法
1. os.pipe() 方法
os.pipe() 方法用于创建一个管道, 返回一对文件描述符(r, w) 分别为读和写。
pipe()方法语法格式如下:
os.pipe()
返回两个文件描述符:
读端文件描述符(r_fd),用于读取数据。
写端文件描述符(w_fd),用于写入数据。
示例如下:
#!/usr/bin/env python3
import os,sys
print ("The child will write text to a pipe and ")
print ("the parent will read the text written by child...")
r_fd,w_fd = os.pipe()
pid = os.fork()
if pid:
#父进程
os.close(w_fd)
read_fd = os.fdopen(r_fd, 'r')
print("Parent process reading from pipe.")
msg = read_fd.read()
print("msg: ",msg)
sys.exit(0)
else:
#子进程
os.close(r_fd)
write_fd = os.fdopen(w_fd, 'w')
print("Child process writing to pipe.")
write_fd.write('Python is a language.\n')
write_fd.close()
print("Child process closed.")
sys.exit(0)
运行后结果如下:
2. os.popen() 方法
os.popen() 方法用于通过执行命令打开一个管道。这个函数可以用来启动一个子进程,执行一些命令,并且能够从该命令的标准输出中读取数据或向其标准输入写入数据。在Unix,Windows中有效。
popen()方法语法格式如下:
os.popen(command, mode, bufsize)
参数:
command -- 使用的命令。
mode -- 模式权限可以是 'r'(默认) 或 'w'。
bufsize -- 指明了文件需要的缓冲大小:0意味着无缓冲;1意味着行缓冲;其它正值表示使用参数大小的缓冲(大概值,以字节为单位)。负的bufsize意味着使用系统的默认值,一般来说,对于tty设备,它是行缓冲;对于其它文件,它是全缓冲。如果没有改参数,使用系统的默认值。
示例如下:
#!/usr/bin/env python3
import os
# 执行命令并获取输出
fd = os.popen('echo "you are wonderful."')
output = fd.read()
print(output)
运行后结果如下: