简体   繁体   中英

reference file-like object in memory

I am using python to run a terminal program call bedtools. Bedtools takes file names as arguments. However, because I can only have 256 files open at once, I am limited in my multithreading ability. I was hoping to be able to send a file in memory to the terminal, but it doesn't have a name, like a SpooledTemporaryFile(). Is there a way to get around this?

example:

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)

is there a away to give region a name so the terminal can find it?

Use NamedTemporaryFile to create the input file. If you close it, there should be no drain on file descriptors.

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM