读取文件夹名称到一定程度并在文件中搜索
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] )
我有一个包含数百个 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] )