我正在使用python来运行终端程序调用bedtools。 Bedtools将文件名作为参数。但是,因为我一次只能打开256个文件,所以我的多线程能力有限。我希望能够将内存中的文件发送到终端,但它没有名称,如SpooledTemporaryFile()。有办法解决这个问题吗?
示例:
f=tempfile.NamedTemporaryFile(delete=True)
region=tempfile.SpooledTemporaryFile()
region.write(b'chr1\t1090917\t1136917\n')
region.seek(0)
subprocess.call(['/usr/local/bin/shuffleBed', '-incl',str(region),'-i','temp'+chromosome+'ShuffleMutations.bed','-g','hg19.genome'],stdout=f)
有没有给区域一个名称,所以终端可以找到它?
答案 0 :(得分:0)
使用NamedTemporaryFile创建输入文件。如果你关闭它,文件描述符应该没有消耗。
f=tempfile.NamedTemporaryFile(delete=True)
region=tempfile.NamedTemporaryFile(delete=False)
region.write(b'chr1\t1090917\t1136917\n')
region.close()
subprocess.call(['/usr/local/bin/shuffleBed', '-incl',region.name,'-i','temp'+chromosome+'ShuffleMutations.bed','-g','hg19.genome'],stdout=f)