重命名文件(最好使用python)

时间:2014-11-07 15:41:46

标签: python file rename

我无法解决问题,希望你能帮助我。

我有几个文件夹,包含文件* .gz,我需要略微修改名称,如下例所示。

我正在考虑使用{filenames:[ list spliting by "_"]}创建字典,然后再次加入,但将001_R1 R1_001的顺序更改为“os.rename”,但必须是一个更好的方式。

感谢您的帮助。

旧名称:

Folder1/

F02_TAGCTT_L005_R1_001.fastq.gz

F02_TAGCTT_L005_R1_002.fastq.gz

Folder2/

J02_TAGCTT_L005_R1_001.fastq.gz

J02_TAGCTT_L005_R1_002.fastq.gz

新名称:

Folder 1/

F02_TAGCTT_L005_001_R1.fastq.gz

F02_TAGCTT_L005_002_R1.fastq.gz

Folder2/

J02_TAGCTT_L005_001_R1.fastq.gz

J02_TAGCTT_L005_002_R1.fastq.gz

2 个答案:

答案 0 :(得分:0)

如果你有GNU用户空间,我可以使用rename命令:

rename _R1_ _ *.gz

rename .fastq.gz _R1.fastq.gz *.gz

否则,在Python中,列出目录,过滤扩展名(或其他),映射重命名函数并在每对原始名称和新名称上调用os.rename

答案 1 :(得分:0)

我想我找到了解决自己问题的方法。由于我刚开始学习python,我相信有更好的方法可以做到这一点。请随时给我任何建议。 这是重命名文件的脚本:

#!/usr/bin/env python -tt

import os

def fq_filelist():fqlist=os.popen('ls *.gz').read().rstrip().split('\n')
       return fqlist

def split_filename():
  mydict = {}
  fqlist = fq_filelist()
  for i in fqlist:
    a = i.rstrip('.fastq.gz')
    for x in a:
      mydict[i] = [a.split('_')]
  return mydict

def myrename():
  mydict = split_filename()
  for i in mydict.keys():
      for x in mydict[i]:
        newname = x[0]+"_"+x[1]+"_"+x[2]+"_"+x[4]+"_"+x[3]+".fastq.gz"
        os.rename(i,newname)

myrename()