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

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

作者: 坐看云起时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