美文网首页
python:根据map关系批量修改文件名

python:根据map关系批量修改文件名

作者: 胡童远 | 来源:发表于2020-09-07 16:56 被阅读0次

导读

用python os.rename函数把一组文件名改成另外一组文件名。

一、准备文件

metadata.txt => map file
rawdata/ => fastq file

图片.png

二、python3代码

目的:num_FDSWxxxx-1r_1/2.fq => character_R1/2.fastq
思路:
1 读取map文件中的一三两列成字典
2 把文件名切割(re.split),修改文件名(os.rename)

#!/usr/bin/env python3
import os,sys,re

# 取metadata两列做成字典,第一列是raw id;第三列是new id
Dict = {}
with open("metadata.txt") as f:
    for line in f:
        line = line.strip()
        cell = re.split(r'\t', line)
        if cell[0] != "SampleID":
            Dict[cell[0]] = []
            Dict[cell[0]].append(cell[2])

# rename test
for each in os.listdir("rawdata"):
    cell = re.split(r'_|\.', each)
    if cell[2] == "1":
        print("rawdata/{}_R1.fastq".format("".join(Dict[cell[0]])))
    elif cell[2] == "2":
        print("rawdata/{}_R2.fastq".format("".join(Dict[cell[0]])))

# rename
for each in os.listdir("rawdata"):
    cell = re.split(r'_|\.', each)
    if cell[2] == "1":
        os.rename("rawdata/{}".format(each), "rawdata/{}_R1.fastq".format("".join(Dict[cell[0]])))
    elif cell[2] == "2":
        os.rename("rawdata/{}".format(each), "rawdata/{}_R2.fastq".format("".join(Dict[cell[0]])))

三、结果

相关文章

网友评论

      本文标题:python:根据map关系批量修改文件名

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