Python 使用CSV文件中的信息在文件夹中保存文件

Python 使用CSV文件中的信息在文件夹中保存文件,python,pandas,dataframe,csv,Python,Pandas,Dataframe,Csv,我有一个CSV文件,有各种列 我感兴趣的有两列 资料- file_Id name 0 1 Distrustful 1 4 Ashamed 2 5 Depressed 3 6 Worried 4 7 Convinced [767 rows x 2 columns] File_ID实际上是不带扩展名的文件名(即

我有一个CSV文件,有各种列

我感兴趣的有两列

资料-

     file_Id            name
0          1     Distrustful
1          4         Ashamed
2          5       Depressed
3          6         Worried
4          7        Convinced

[767 rows x 2 columns]
File_ID实际上是不带扩展名的文件名(即1.wav、4.wav等),所有文件都保存在特定文件夹中

我想要一个python脚本在数据帧上运行,转到
文件\u Id
,添加扩展名,然后将其保存在一个目录中,该目录的名称与
name
列下的值对应,如果不存在,则创建该目录

范例-

1.wav保存在不信任状态

4.感到羞耻等等

我的尝试-

import os
import pandas as pd

df = pd.read_csv('C:\\Data.csv')
df1 = df.sort_values(['name', 'file_Id'])
df1 = df1.drop(columns=['Arousal', 'Valence', 'closest_pairs', 'min_distance'])
print (df1)

结果-

               song_Id
name                  
Ambitious           28
Ashamed             45
Attentive            1
Bored                1
Confident            5
Convinced           85
..       ...        ...

实际上,我现在不知道该怎么做,
os.splitext
是我的第一个猜测,但它没有用。

您可以使用路径创建,这样可以轻松创建目录、添加扩展名等。然后使用模块高效地复制文件

从pathlib导入路径
从shutil导入copy2
#包含文件的路径
源=路径(“源/路径”)
对于,df.iterrows()中的行:
#转换为字符串,然后创建文件路径(不带扩展名)
filename=Path(str(行[“file\u Id”])。带后缀(“.png”)
#目标文件夹路径
目标=路径(行[“名称”])
#创建目标文件夹
target.mkdir(exist\u ok=True)
#复制文件
copy2(源/文件名、目标/文件名)
当然,有几种方法可以提高效率。在遍历所有数据帧行以复制文件之前,可能会获取所有唯一的目标目录并创建这些目录。

import
进口舒蒂尔
导入操作系统
file=pandas.read_csv('trial.csv')#这只是一个例子
id=file.iloc[0:,0]
folder=file.iloc[0:,1]
real_path=os.getcwd()#获取当前工作目录
对于范围内的i(len(folder)):#因为id和folders具有相同的变量总数。
old_id=str(id[i])#即“0”
old\u id\u path=real\u path+'\\'+old\u id,即'C:\Windows\0'
new_id=str(id[i])+'.wav'#即'0.wav'
new\u id\u path=real\u path+'\\'+new\u id,即'C:\Windows\0.wav'
新建文件夹=实际路径+'\\'+文件夹[i]——即'C:\Windows\noise'
目标\文件=新\文件夹+'\\'+新\ id,即'C:\Windows\noise\0.wav'
如果os.path.exists(destination_file)==True或os.path.exists(old_id_path)==False:
#如果文件已在目标中或根本不存在
继续#跳过此循环
如果os.path.exists(new_id)=True:#即如果存在“C:\Windows\0.wav”
通过
其他:
shutil.move(旧的_id_路径,新的_id_路径)#即,将0重命名为0.wav
如果os.path.exists(new_folder)=True:#即如果存在“C:\Windows\noise”
通过
其他:
os.makedirs(新文件夹)#创建新文件夹,即“C:\Windows\noise”
move(new_id_path,destination_file)#将文件移动到目标
#i、 e,0.wav到噪波,'C:\Windows\noise\0.wav'

这会引发一个错误:
FileNotFoundError:[Errno 2]没有这样的文件或目录:“D:\\Study\\1
发生这种情况是因为目录中的文件已经有.wav扩展名吗?我想我误解了你的问题。您是否有扩展名为的文件目录,并希望将这些文件重新组织到正确的目录下?我编辑了我的答案,以反映文件在其原始文件夹中已经有扩展名。如果不清楚,很抱歉,我有一个文件夹,其中有750多首歌曲(每个都是wav文件),数据框中的文件Id是文件名,因此我有1.wav、4.wav等文件。现在我要做的是,根据dataframe中的name列创建一个新目录,并将歌曲复制/移动到该目录。希望这能让你明白,非常感谢。我会在这里和那里改变一些事情。这非常适合我的情况。