我有不同语言的单词列表及其英语翻译:
#;Eng;Spanish;
1;yes;si;
2;no;ningun;
3;question;cuestión;
对于所有这些单词(或条目),我都有一个音频文件,说明如何发音(来自Forvo)。音频文件用语言和“#”值命名。因此, spanish1.m4a , spanish2.m4a , spanish3.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”
我该如何解决这个问题?
答案 0 :(得分:1)
您的方向正确。要修复的两个主要问题是:
以下代码为您的OP中的西班牙csv示例提供了所需的功能,重命名了文件spanish1.m4a
,spanish2.m4a
和spanish3.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")
答案 1 :(得分:0)
请先备份文件,然后再尝试
为什么要使用Python甚至是pandas
,也可以只使用awk
:
awk -F ';' '{ if($1!="#") system("mv spanish"$1".m4a "$2"-"$3"-"$1".m4a") }' list.csv
这将根据您的规则重命名spanish#.m4a
文件。您可以将其应用于您的hebrew
问题。