读取文件夹名称到一定程度并在文件中搜索

Read a folders name up to a point and search inside file

我有一个包含数百个 ascii 文件的文件夹,它们的名称类似于:

(POD20keuaks_221599.ascii, POD11ejsjs_221202.ascii etc.) 

我还有一个包含多列的 csv 文件,如下所示,文件名最多写成“_”:

name,sale
POD20keuak,20
POD11ejsjs,22
...

我有一个 运行 代码,它首先进入 csv 文件并获取名称并将其用作文件名,但如果有两个相同的命名文件,它不会对所有名称都这样做“_”,例如“POD20keuaks_221599.ascii 和 POD20keuaks_352599.ascii”。在那种情况下,它只读取一个。

import os
import numpy as np
import pandas as pd
import re

dir_path = '/home/user/Downloads/Project/' 
Dvalues = pd.read_csv(dir_path+'Dvalues.csv')
file_names = list(Dvalues['name'])
ascii_files_name = [] 

for filename in os.listdir(dir_path):
    if filename[:3] != 'POD':continue 
    if filename[:filename.index('_')] in file_names:
        ascii_files_name.append(filename)
        
files_data = {} 
for file in ascii_files_name:
    file_short_name = file[:file.index('_')]
    D_value_sale = Dvalues[Dvalues['name'] == file_short_name]['sale'].values[0] 
    files_data[file_short_name] = [np.loadtxt(dir_path + file), D_value_sale]  

我不明白为什么它没有读取所有内容以及如何解决它。或者理想情况下,我们如何首先读取“_”之前的文件名,然后查看 csv 文件以获取具有该名称的相应值(与我的做法相反)?

我不能运行,但我认为你使用file_short_name 来保存文件是个问题

代码可以读取除行

以外的所有文件
files_data[file_short_name] = [np.loadtxt(dir_path + file), D_value_sale] 

替换以前文件中的值。

也许你应该使用全名

files_data[file] = [np.loadtxt(dir_path + file), D_value_sale] 

或者您应该使用列表来保留所有文件

if file_short_name not in files_data:
    files_data[file_short_name] = []

files_data[file_short_name].append( [np.loadtxt(dir_path + file), D_value_sale] )