2014-11-03 2 views
2

У меня есть каталог, содержащий несколько файлов в этом формате:переименовать все файлы в каталоге с помощью Python

1 or 2 numbers_S followed by 1 or 2 numbers_L001_R1 or R2_001.fastq 

Examples: 1_S1_L001_R1_001.fastq or 14_S14_L001_R2_001.fastq 

Я хочу имена файлов, чтобы быть похожим на это: 1_R1.fastq 14_R2.fastq

я понял, regexp, который отражает имена файлов и может успешно выполнить поиск и заменить в пределах TextWrangler. Ниже регулярное выражение, которое я придумал:

Search: (\d+)\wS\d+\wL001\w(R\d)\w001(\.fastq) 
Replace: \1_\2\3 (or $1_$2$3 depending on the program) 

Однако, я хотел бы знать, как пакетное переименование файлов с помощью простого скрипта Python. Буду признателен за любые советы.

Спасибо!

+1

Не могли бы вы показать нам код для вашей текущей попытки? – phantom

ответ

8

Вы можете сделать что-то вроде этого

import glob, re, os 

for filename in glob.glob('/some/dir/*.fastq'): 
    new_name = re.sub(pattern, r'\1_\2\3', filename) 
    os.rename(filename, new_name) 
+0

Большое спасибо! Это сработало чудесно. – MMiller

2

Рассмотрите возможность использования пакетов Os и оттуда вы можете использовать os.rename (ЦСИ, ДСТ). Документация правильная here.

Смежные вопросы