美文网首页
批量解压文件,将解压后的文件保存在一个文件夹中

批量解压文件,将解压后的文件保存在一个文件夹中

作者: 坐看云起时zym | 来源:发表于2019-10-16 21:48 被阅读0次

在最近的工作中,笔者遇到了一个问题。笔者从TCGA数据库中下载了全部癌症病人的whole genome的RNA-seq数据。但是利用TCGA提供的gdc-client下载工具下载后,每个病人都单独成为一个文件夹,每个文件夹里有以tz格式压缩的RNA-seq数据和annotations。这给进一步的分析带来了困难。

为了解决这个问题,我打算将所有文件解压到一个文件夹中。做法是:
1、得到所有RNA-seq tz文件的路径,具体可参见“get_all_gz_path”函数。我们可以通过对于文件的后缀名进行约束,选择我们需要的文件。
2、遍历所有选择出的文件,利用python自带的gzip,将压缩文件解压到我们希望的路径中。

import os
import gzip

#原始数据的路径
path ='/home/openuser/zhaoyimin/TCGA/Raw'
 
def get_all_gz_path(root):
    results = []
    for dirpath, dirnames, filenames in os.walk(root):
        dirpath = dirpath+'/'
        print(dirpath)
        for filename in filenames:
            if filename[-3:] == '.gz':
                results.append(dirpath + filename)
    return results
 
#input 文件的绝对路径、想要保存的路径
def un_gz(file_name,dest_dir):
    f_name = dest_dir + '/' + os.path.basename(file_name).replace(".gz", "")
    # 获取文件的名称,去掉  
    g_file = gzip.GzipFile(file_name)  
    # 创建gzip对象  
    open(f_name, "wb+").write(g_file.read())  
    # gzip对象用read()打开后,写入open()建立的文件中。  
    g_file.close()  
    # 关闭gzip对象  
    return 0

gz_files = get_all_gz_path(path)

for i in range(len(gz_files)):
    un_gz(gz_files[i],'/home/openuser/zhaoyimin/TCGA/FPKM_data')

相关文章

网友评论

      本文标题:批量解压文件,将解压后的文件保存在一个文件夹中

      本文链接:https://www.haomeiwen.com/subject/qslpmctx.html