2015-09-15 30 views
2

我需要以下格式重命名多個文件:Python的文件重命名語法錯誤

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' '正則表達式,這避免了錯誤,但不改變文件名。在r。還有的newname參數os.rename

回答

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 

包圍的正則表達式應該包括文件路徑,否則它會重命名文件,從腳本,如果被調用所在目錄。

+0

謝謝你,文件路徑是關鍵! –