Python:从CSV重命名文件

2024-05-17 15:48:00 发布

您现在位置:Python中文网/ 问答频道 /正文

问题

我有一个不同语言的单词列表及其英文翻译:

#;Eng;Spanish;
1;yes;si;
2;no;ningun;
3;question;cuestión;

对于所有这些单词(或词条),我有一个关于如何发音的音频文件(来自Forvo)。音频文件用语言和“#”值命名。因此,spanish1.m4aspanish2.m4aspanish3.m4a

现在,我想按如下方式重命名该文件:yes-si-1.m4a

脚本

import pandas as pd
import os

os.chdir('/Users/user/Desktop/audio')

df = pd.read_csv('hebrew.csv', delimiter=';')

Row = (df['#']) #line number
Eng = (df['Eng']) #English trans
HebF = (df['HebF']) #Feminine
HebM = (df['HebM']) #Masculine

for filename in os.listdir():

oldName = os.path.basename(filename)

num = oldName.strip('hebrew')

现在我想用If语句。如果Row等于Num,则将文件名更改为Eng+HebF+Row+“.m4a”

如何解决这个问题?你知道吗


Tags: csvimport语言dfos单词eng音频文件
2条回答

你的方向是对的。要解决的两个主要问题是:

  • 为了在编程中重命名文件,通常使用不同的名称将它们移动到同一文件夹中。这可以用shutil module of Python's standard library轻松完成。你知道吗
  • 你自己尽量简单些。无需更改目录和为文件构建绝对路径—只需将python脚本与要重命名的文件放在同一文件夹中,打开该文件夹中的终端并执行脚本即可。Python只需传递文件名就可以看到同一文件夹中的文件,不需要完整的路径。你知道吗

下面的代码实现了OP中西班牙语csv示例所需的功能,重命名了文件spanish1.m4aspanish2.m4aspanish3.m4a。请注意:

1)所有文件(代码、csv和.m4a文件)应在同一目录下

2)我正在使用f-strings来构建文件名字符串-希望从代码中可以看到足够明显的格式

3)为了使代码能够处理其他语言的文件,您需要进行一些重构。你知道吗

对于这个任务来说,使用pandas是一种过分的做法,但我不想太多地更改您的代码结构。如果你有任何疑问,请告诉我。你知道吗

import pandas as pd
import shutil

df = pd.read_csv('spanish.csv', delimiter=';')

Row = (df['#']) #line number
Eng = (df['Eng']) #English trans
Spa = (df['Spanish']) #Spanish 

for i in Row:
    eng = Eng[i-1]
    spa = Spa[i-1]
    old_file = f"spanish{i}.m4a"
    shutil.move(old_file, f"{eng}-{spa}-{i}.m4a")

请在尝试此操作之前备份您的文件

为什么使用Python甚至pandas是因为您可以只使用awk

awk -F ';' '{ if($1!="#") system("mv spanish"$1".m4a "$2"-"$3"-"$1".m4a") }' list.csv

这将根据您的规则重命名spanish#.m4a文件。您可以将相同的方法应用于hebrew问题。你知道吗

相关问题 更多 >