现在我正在编写一个 python 脚本来读取二进制格式(netCDF)的数据和 csv 文件。只是从另一个只接受 csv 文件的程序中再次读取它。
是否有任何选项可以将内存中的 CSV 文件直接提供给第二个程序?某种伪文件?第二个程序认为它正在读取 CSV 文件但实际上只是内存中的文件?
现在我正在编写一个 python 脚本来读取二进制格式(netCDF)的数据和 csv 文件。只是从另一个只接受 csv 文件的程序中再次读取它。
是否有任何选项可以将内存中的 CSV 文件直接提供给第二个程序?某种伪文件?第二个程序认为它正在读取 CSV 文件但实际上只是内存中的文件?
您可以使用subprocess
模块的管道功能将数据写入其他程序。
import subprocess
proc = subprocess.Popen("/usr/bin/tac", stdin=subprocess.PIPE) # Output will go to stdout
proc.communicate("hello\nworld\n") # This data goes to the subprocess.
将输出(或者更确切地说,tac
将)
world
hello
编辑:这是假设其他程序支持从标准输入读取。如果没有,您可能可以在类 UNIX 系统上使用 fifos 进行模拟...
您可以使用tempfile模块:
>>> import tempfile
>>> f = tempfile.NamedTemporaryFile(delete=False)
>>> f.write("Hello World!\nHello World!\n")
>>> f.close()
>>> f=open(f.name)
>>> f.readlines()
['Hello World!\n', 'Hello World!\n']