【发布时间】:2018-02-27 07:36:50
【问题描述】:
我有一个文件夹,其中包含多个具有以下文件名的文件,例如,我有多个不同的文件
_EGAZ00001018697_2014_ICGC_130906_D81P8DQ1_0153_C2704ACXX.nopd.AOCS_001_ICGCDBDE20130916001.rsem.bam
现在我想重命名然后仅使用 ICGCDBDE20130916001.rsem.bam 将根据路径中的文件而改变。与名称 *.rsem.bam 对应的字符串应该是用“_”分隔的字符串。所以对于目录中的所有文件都应该相应地替换为这个。我正在考虑使用正则表达式,所以我想出了以下模式
pat=r'_(.*)_(.*)_(.*)_(.*)_(.\w+)'
这会根据需要分离出我的文件名,我可以使用全局变量重命名文件名,其中我只使用pat[4]。我想使用 python,因为我想从现在开始学习它以进行小的更改,例如文件重命名等等,然后随着时间的推移在 python 中转换我的工作流程。我做不到。我应该如何在 python 中完成这项工作?我也在修复什么应该是相应的 bash 正则表达式,因为这是一个非常大的文件名,而我遇到这样的文件名是非常新的。下面是我的代码,不要直接更改,而是要了解它是否有效,但是如果我想重命名它们,我应该如何让它工作。
import re
import os
_src = "path/bam/test/"
_ext = ".rsem.bam"
endsWithNumber = re.compile(r'_(.*)_(.*)_(.*)_(.*)_(.\w+)'+(re.escape(_ext))+'$')
print(endsWithNumber)
for filename in os.listdir(_src):
m = endsWithNumber.search(filename)
print(m)
我会很欣赏 python 和 bash,但是,我更喜欢 python 以供我自己理解和未来学习。
【问题讨论】: