【问题标题】:Python file renaming syntax errorPython文件重命名语法错误
【发布时间】:2015-12-11 04:14:46
【问题描述】:

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

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' ' 将正则表达式括起来,这样可以避免错误,但不会更改文件名。

【问题讨论】:

    标签: python regex rename glob


    【解决方案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 中包含正则表达式。此外,os.renamenewname 参数应包含文件路径,否则它将重命名文件到调用脚本的目录。

    【讨论】:

    • 谢谢,文件路径是关键!
    猜你喜欢
    • 1970-01-01
    • 2021-02-26
    • 2016-04-09
    • 2016-12-02
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 2015-01-14
    相关资源
    最近更新 更多