如何替换字符和重命名多个文件?



我有一堆pdf文件,文件名如下:

  1. AuthorA_2014_ 这是一篇好文章
  2. BIsanotherAuthor_1994_ Gr8动脉
  3. CIsFatherOfB_1994_Minor文章,但还不错

等等。我想将文件名更改为以下格式:

  1. 作者A2014这是一篇好文章
  2. BIsotherAuthor1994Gr8 artcle
  3. CIs父亲B1994小文章但还不错

如何在 python 中执行此操作?我确实有 python 的初学者水平的知识。我尝试使用从这里获取的代码

import os
path =  os.getcwd()
filenames = os.listdir(path)
for filename in filenames:
os.rename(filename, filename.replace("_", ""))

使用此代码,我可以将标题从 AuthorA_2014_ 这是一篇好文章到 AuthorA2014 这是一篇好文章,它删除了下划线,但我不希望文章的年份和标题之间有任何空白。我该如何实现此目的?

我正在使用Python 3.7.7

这应该可以完成:

import os
path =  os.getcwd()
filenames = os.listdir(path)
for filename in filenames:
os.rename(filename, filename.replace("_", "").replace("_ ", ""))

您可以使用正则表达式删除带有可选尾随空格的_

import re
import os
path =  os.getcwd()
filenames = os.listdir(path)
for filename in filenames:
os.rename(filename, re.sub(r'_ ?', '', filename))
import re
import os
path =  os.getcwd()
files = os.listdir(path)
for file in files:
os.rename(file, re.sub(r'_ ?', '', file))

使用 pathlib:

  • 此模块提供表示文件系统路径的类,这些类具有适用于不同操作系统的语义。
  • 给定一个使用t = Path.cwd() / 'test_foo_ bar.txt'创建的 pathlib 对象
    • .rglob查找所有.pdf文件
    • WindowsPath('E:/PythonProjects/stack_overflow/test_foo_ bar.txt')
    • t.stem'test_foo_ bar'
    • t.suffix'.txt'
    • t.parentWindowsPath('E:/PythonProjects/stack_overflow')
      • t.parent / 'new_name.txt'WindowsPath('E:/PythonProjects/stack_overflow/new_name.txt')
    • t.rename(...)重命名文件
from pathlib import Path
p = Path.cwd()  # for current working directory or Path('/some_path/files')
for file in p.rglob('*.pdf'):  # get all pdfs in all subdirectories
new_file_name = file.stem.replace('_', '').replace('_ ', '') + file.suffix
file.rename(file.parent / new_file_name)

最新更新