读取.bed文件和以特定格式压缩输出时出现的问题

2024-04-25 20:47:14 发布

您现在位置:Python中文网/ 问答频道 /正文

import os #handles the gzipped output like the example file
file_name = "exampleziptotxt.bed"
out_file_root = "example_by_chrom"
file_handle_dict = {}

file_reader=open(file_name)

for line in file_reader:
    ff=line.strip().split(",")
    chrom_name=ff[0]
    if not (chrom_name in file_handle_dict):
        out_file_chrom_name=out_file_root+"."+chrom_name+".bed"
        out_file_chrom_name_handle=open(out_file_chrom_name,"w")
        file_handle_dict[chrom_name]=out_file_chrom_name_handle
    # write the line in the appropriate output file
    file_handle_dict[chrom_name].write(line)
    # file_handle_dict[chrom_name].write("%s\n"%"\t".join(ff))

file_reader.close()

# now close all open files
for chrom_name in file_handle_dict:
    file_handle_dict[chrom_name].close()

我想重写上面的代码,以便使用gzip或其他方法输出多个gzip文件。我不确定如何做到这一点。任何帮助都将不胜感激


Tags: thenameincloseoutputlineopenout
1条回答
网友
1楼 · 发布于 2024-04-25 20:47:14

只需要一些小的更改,import gzip(不需要os),在名称中添加.gz,使用gzip.open而不是open进行写入,并在行中使用.encode()将其转换为字节

import gzip

file_name = "exampleziptotxt.bed"
out_file_root = "example_by_chrom"
file_handle_dict = {}

file_reader=open(file_name)

for line in file_reader:
    ff=line.strip().split(",")
    chrom_name=ff[0]
    if not (chrom_name in file_handle_dict):
        out_file_chrom_name=out_file_root+"."+chrom_name+".bed.gz"
        out_file_chrom_name_handle=gzip.open(out_file_chrom_name,"w")
        file_handle_dict[chrom_name]=out_file_chrom_name_handle
    # write the line in the appropriate output file
    file_handle_dict[chrom_name].write(line.encode())
    # file_handle_dict[chrom_name].write("%s\n"%"\t".join(ff))

file_reader.close()

# now close all open files
for chrom_name in file_handle_dict:
    file_handle_dict[chrom_name].close()

相关问题 更多 >

    热门问题