编程题:有一个voiceFile文件夹内的50个后缀是*.pcm文件名称都需要修改,文件后缀保留,修改的名称参考:rename.csv中的影射关系,第一列是文件原来的名字,第二列是文件现在的名字,每行都有影射关系(第一列老名字,第二列是对应的新名字),要求将文件夹的文件都名称都改成B列的名字 -- 不限制语言。
时间: 2024-02-25 12:57:30 浏览: 29
以下是 Python 代码实现:
```python
import os
import csv
# 读取 rename.csv 文件
with open('rename.csv', 'r', newline='') as csvfile:
reader = csv.reader(csvfile)
mapping = {row[0]: row[1] for row in reader}
# 获取 voiceFile 文件夹中所有 *.pcm 文件
pcms = [f for f in os.listdir('voiceFile') if f.endswith('.pcm')]
# 遍历所有 *.pcm 文件,并重命名文件名
for pcm in pcms:
old_name = os.path.join('voiceFile', pcm)
new_name = os.path.join('voiceFile', mapping[pcm])
os.rename(old_name, new_name)
```
这段代码首先读取 rename.csv 文件,并将其中的影射关系存储在 mapping 字典中。然后,获取 voiceFile 文件夹中所有的 *.pcm 文件,并遍历每个文件,将其重命名为对应的新名字。
相关问题
7、编程题: 有一个voiceFile 文件夹内的50个后缀是*pcm 文件名称都需要修改,文件后缀保留,修改的名称参考: rename.csv 中的影射关系,第一列是文件原来的名字第二列是文件现在的名字,每行都有影射关系(第一列老名字,第二列是对应的新名字),要求将文件夹的文件都名称都改成 B 列的名字- 不限制语言。
这道编程题要求将一个文件夹内50个pcm文件的文件名修改为另一个文件名,修改的规则在一个csv文件(rename.csv)中给出,每一行对应一个文件名的修改规则。具体步骤如下:
1. 读取rename.csv文件,将每一行的第一列作为原文件名,第二列作为新文件名,保存到一个字典中,方便后面进行文件名的修改操作。
2. 遍历voiceFile文件夹,找到所有以pcm为后缀的文件。
3. 对于每一个文件,从字典中查找对应的新文件名,如果找到了则将文件名修改为新文件名。
4. 修改完成后,输出修改成功的文件名列表。
代码实现:
```python
import os
import csv
# 读取rename.csv文件,将文件名修改规则保存到字典中
rename_dict = {}
with open('rename.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
rename_dict[row[0]] = row[1]
# 遍历voiceFile文件夹,找到所有以pcm为后缀的文件,并修改文件名
success_list = []
for filename in os.listdir('voiceFile'):
if filename.endswith('.pcm'):
old_name = os.path.join('voiceFile', filename)
new_name = os.path.join('voiceFile', rename_dict.get(filename, filename))
os.rename(old_name, new_name)
success_list.append(new_name)
# 输出修改成功的文件名列表
print('修改成功的文件名列表:')
for filename in success_list:
print(filename)
```
以上代码通过读取csv文件,将pcm文件的修改规则保存到字典中,再遍历文件夹内的所有pcm文件,查找对应的修改规则,修改文件名后输出成功修改的文件名列表。
编程题:有一个voiceFile文件夹内的50个后缀是*pcm文件名称都需要修改,文件后缀保留,修改的名称参考:renamecsv中的影射关系,第一列是文件原来的名字第二列是文件现在的名字,每行都有影射关系(第一列老名字第二列是对应的新名字)要求将文件夹的文件都名称都改成B列的名字 并注释每一行
以下是Python 3的代码实现:
```python
import os
# 读取renamecsv文件中的影射关系
mapping = {}
with open('renamecsv', 'r') as f:
for line in f:
old_name, new_name = line.strip().split(',')
mapping[old_name] = new_name
# 处理voiceFile文件夹中的文件名
folder_path = 'voiceFile'
for filename in os.listdir(folder_path):
# 判断文件名是否是pcm文件
if filename.endswith('.pcm'):
# 获取文件名和文件后缀
old_name, ext = os.path.splitext(filename)
# 判断文件名是否在影射关系中
if old_name in mapping:
new_name = mapping[old_name] + ext
# 重命名文件
os.rename(os.path.join(folder_path, filename), os.path.join(folder_path, new_name))
# 打印注释
print(f"Rename {filename} to {new_name}")
```
代码的流程如下:
1. 读取renamecsv文件中的影射关系,保存到mapping字典中。
2. 遍历voiceFile文件夹中的所有文件名,判断是否是pcm文件。
3. 对于每个pcm文件,获取文件名和文件后缀,判断文件名是否在影射关系中。
4. 如果文件名在影射关系中,根据影射关系生成新的文件名,重命名文件,并打印注释。