我无法解决问题,希望你能帮助我。
我有几个文件夹,包含文件* .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
答案 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()