重命名文件(最好使用python)
我解决不了一个问题,希望你能帮助我 我有几个文件夹,其中包含文件*.gz,我需要稍微修改名称,如下面的示例所示 我在考虑用{filenames:[列表按{]}拆分]创建一个字典,然后再次加入,但将R1_001的001_R1顺序更改为最终的os.rename,但肯定有更好的方法 谢谢你的帮助 旧名: 新名称:重命名文件(最好使用python),python,file,rename,Python,File,Rename,我解决不了一个问题,希望你能帮助我 我有几个文件夹,其中包含文件*.gz,我需要稍微修改名称,如下面的示例所示 我在考虑用{filenames:[列表按{]}拆分]创建一个字典,然后再次加入,但将R1_001的001_R1顺序更改为最终的os.rename,但肯定有更好的方法 谢谢你的帮助 旧名: 新名称: 如果您有GNU用户空间,我将使用rename命令: rename _R1_ _ *.gz rename .fastq.gz _R1.fastq.gz *.gz 否则,在Python中,列
如果您有GNU用户空间,我将使用rename命令:
rename _R1_ _ *.gz
rename .fastq.gz _R1.fastq.gz *.gz
否则,在Python中,列出目录、在扩展名上进行筛选或其他操作,映射重命名函数并对每对原始名称和新名称调用os.rename。我想我已经找到了解决我自己问题的方法。由于我刚刚开始学习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()
哈维尔,谢谢你的回复。问题是使用rename我得到了:F02_TAGCTT_L005_R1_001_R1.fastq.gz,但我需要F02_TAGCTT_L005_001_R1.fastq.gz。由于001这个术语在文件中发生了变化,所以我不能使用rename。我将按照您的建议尝试python。如果得到一个合适的脚本,我会把它贴在这里,第一个重命名应该删除R1,第二个在结尾添加_R1。如果有两个R1,则第一个重命名不起作用。玩到你做对为止,对!我知道。我使用rename和python脚本得到了相同的结果。我不知道重命名,很高兴学习一个新命令。
rename _R1_ _ *.gz
rename .fastq.gz _R1.fastq.gz *.gz
#!/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()