Python文件重命名语法错误

时间:2015-09-15 03:03:02

标签: python regex rename glob

我需要使用以下格式重命名许多文件:

509938_OPS001_ACTCGCTA-TCGACTAG_L001_R1_001.fastq.gz

我测试了我的正则表达式:

\d+\w([OPS]+\d+)[_]\w+-\w+[_](\d+)(\.fastq\.gz)

我已尝试过以下脚本的多个版本,但每个脚本都会在re.sub后抛出语法错误。

import glob, re, os

for filename in glob.glob('some/dir/*.fastq.gz'):
    new_name = re.sub(\d+\w([OPS]+\d+)[_]\w+-\w+[_](\d+)(\.fastq\.gz), r'\1_\2\3', filename)
    os.rename(filename, new_name)

$python fastq_rename.py
  File "fastq_rename.py", line 6
    new_name = re.sub(\d+\w([OPS]+\d+)[_]\w+-\w+[_](\d+)(\.fastq\.gz)), r'\1_\2\3', filename)
                                                                                            ^
SyntaxError: unexpected character after line continuation character

假设这与未转义的反斜杠有关,我已将正则表达式与r' '括起来,这样可以避免错误,但不会更改文件名。

1 个答案:

答案 0 :(得分:1)

new_name = re.sub(r'\d+\w([OPS]+\d+)[_]\w+-\w+[_](\d+)(\.fastq\.gz)', r'\1_\2\3', filename)
new_name="some/dir/"+newname

r中包含正则表达式。newname的{​​{1}}参数也应该包含filepath,否则它会将文件重命名为脚本调用的目录。