如何使用 Python 中文本文件的列表重命名一堆文件?

How do i rename a bunch of files with a list from a text file in Python?

我开始学习 Python,我正在做一个项目,从包含文件新名称的文本文件列表中重命名一堆文件。

在我的文件夹中有 lesson1.mp4lesson2.mp4lesson3.mp4 等文件。在文本文件中,我有新名称 1-newname2-newname3-newname(用换行符分隔)。

首先,我更改目录并将变量存储在文件中,然后我使用 file.readlines() 逐行分隔。

import os

os.chdir(r"C:\Users\Samaritan\Documents\Python\
Ejercicios\pruebarenamefiles")

file = open('new_names.txt')
lines = file.readlines()

然后,我创建了一个函数来 return 根据列表的位置新名称。

def n_name(num):     
    return lines[num]

然后我遍历目录并使用函数 n_name

重命名每个位置
i = 0
for file in os.listdir():
    if file != "new_names.txt":
        os.rename(file, n_name(i))
        i += 1

但是根本不管用。我收到 "OSError: [WinError 123]"

C:\Users\Samaritan\Documents\Python\Ejercicios\rename_files\venv\Scripts\python.exe C:/Users/Samaritan/Documents/Python/Ejercicios/rename_files/main.py
Traceback (most recent call last):

File "C:\Users\Samaritan\Documents\Python\Ejercicios\rename_files\main.py", line 16, in <module>
    os.rename(file, n_name(i)) OSError: [WinError 123] El nombre de archivo, el nombre de directorio o la sintaxis de la etiqueta del volumen no son correctos: 'Nuevo documento de texto - copia (2).txt'
-> '01 - Course Introduction\n'

Process finished with exit code 1

英文的意思是这样的:WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect:

报错信息说明问题,请仔细阅读。目标文件名末尾包含换行符,这在 Windows.

上是不允许的

要阅读没有换行符的行,请尝试

with open("new_names.txt") as file:
    lines = [line.rstrip("\n") for line in file]

但是,使用单独的函数从列表中获取第 n: 个对象也很奇怪;索引是列表的基本 built-in 方法。

files = os.listdir()
files.remove("new_names.txt")
for idx, filename in enumerate(files):
    os.rename(filename, lines[idx])

同样,您可以 zip 这两个列表,如另一个答案中所建议的那样,但是您仍然必须先从输入列表中单独删除 new_names.txt ,就像上面的代码一样。

如果新名称像您的问题所暗示的那样单调,也许只是即时生成它们而不是将它们放入文件中。

idx = 1
for filename in os.listdir():
    if file == "new_names.txt":
        continue
    os.rename(filename, f"{idx}-newname.txt")
    idx += 1

如果您想对数字应用格式,请尝试例如f"{idx:02}-newname.txt" 强制索引号为两位数并用零填充。