如何 运行 为具有公共字符串的多个文本文件编写脚本?
How to Run script for multiple text files with a common string?
在我的研究工作中,我有多个文本文件有一个共同的字符串 "Max",并且 Max 在 0.10 到 2.00 范围内具有不同的值,步长为 0.10,如下所示:
A_100Hz_Rate20Hz_5tot_0.10Max_1_
A_100Hz_Rate20Hz_5tot_0.10Max_2_
A_100Hz_Rate20Hz_5tot_0.10Max_3_
.
.
.
A_100Hz_Rate20Hz_5tot_2.00Max_1_
A_100Hz_Rate20Hz_5tot_2.00Max_2_
A_100Hz_Rate20Hz_5tot_2.00Max_3_
我需要根据 Max 的值(例如:0.10Max)导入所有文件,以分别获取具有相同 Max 值的文件的平均值以获得:
Ave_A_100Hz_Rate20Hz_5tot_0.10Max_3_
.
.
.
Ave_A_100Hz_Rate20Hz_5tot_2.00Max_3_
我试过一个手动 glob 模块,它对 "Max" 的一个值工作良好,但对整个范围它不起作用。这是我的代码:
import numpy as np
import glob
import pandas as pd
h = np.linspace(0.10,2.00,20)
for x in h:
x1 = ("%.2f" % x)
glob_path = 'input/*_{}Vbr_*.txt'.format(x1)
import_files = glob.glob(glob_path)
print(x,import_files )
for index, file_name in enumerate(import_files ):
merged_data = pd.read_csv(file_name, header=None, delimiter="\t").values
if index==0:
summation = merged_data
else:
summation = summation + merged_data
averaging = summation/len(import_files)
np.savetxt('output/Ave_'+file_name[10:], averaging, delimiter="\t" )
我需要写一个通用脚本。但是,就我而言,现在我使用的脚本只有两个值 x = 1.50 和 x = 2.0 以使其变得简单。我尝试了 print(import_files) 并期望输出为:
['input\A_100Hz_Rate20Hz_5tot_1.50Max_1_.txt',
'input\A_100Hz_Rate20Hz_5tot_1.50Max_2_.txt',
'input\A_100Hz_Rate20Hz_5tot_1.50Max_3_.txt']
['input\A_100Hz_Rate20Hz_5tot_2.00Max_1_.txt',
'input\A_100Hz_Rate20Hz_5tot_2.00Max_2_.txt',
'input\A_100Hz_Rate20Hz_5tot_2.00Max_3_.txt']
但实际输出是(简而言之):
0.1 []
0.2 []
1.5 ['input\A_100Hz_Rate20Hz_5tot_1.50Max_1_.txt',
'input\A_100Hz_Rate20Hz_5tot_1.50Max_2_.txt',
'input\A_100Hz_Rate20Hz_5tot_1.50Max_3_.txt']
1.6 []
1.7 []
2.0['input\A_100Hz_Rate20Hz_5tot_2.00Max_1_.txt',
'input\A_100Hz_Rate20Hz_5tot_2.00Max_2_.txt',
'input\A_100Hz_Rate20Hz_5tot_2.00Max_3_.txt']
并且导致内核出错
np.savetxt('output/Ave_'+file_name[10:], averaging, delimiter="\t" )
NameError: name 'file_name' is not defined
拜托,有什么建议吗?
我认为你只需要测试 import_file
是否为空:
for x in h:
x1 = ("%.2f" % x)
glob_path = 'input/*_{}Vbr_*.txt'.format(x1)
import_files = glob.glob(glob_path)
print(x,import_files )
if len(import_files) != 0:
for index, file_name in enumerate(import_files ):
merged_data = pd.read_csv(file_name, header=None, delimiter="\t").values
if index==0:
summation = merged_data
else:
summation = summation + merged_data
averaging = summation/len(import_files)
np.savetxt('output/Ave_'+file_name[10:], averaging, delimiter="\t" )
在我的研究工作中,我有多个文本文件有一个共同的字符串 "Max",并且 Max 在 0.10 到 2.00 范围内具有不同的值,步长为 0.10,如下所示:
A_100Hz_Rate20Hz_5tot_0.10Max_1_
A_100Hz_Rate20Hz_5tot_0.10Max_2_
A_100Hz_Rate20Hz_5tot_0.10Max_3_
.
.
.
A_100Hz_Rate20Hz_5tot_2.00Max_1_
A_100Hz_Rate20Hz_5tot_2.00Max_2_
A_100Hz_Rate20Hz_5tot_2.00Max_3_
我需要根据 Max 的值(例如:0.10Max)导入所有文件,以分别获取具有相同 Max 值的文件的平均值以获得:
Ave_A_100Hz_Rate20Hz_5tot_0.10Max_3_
.
.
.
Ave_A_100Hz_Rate20Hz_5tot_2.00Max_3_
我试过一个手动 glob 模块,它对 "Max" 的一个值工作良好,但对整个范围它不起作用。这是我的代码:
import numpy as np
import glob
import pandas as pd
h = np.linspace(0.10,2.00,20)
for x in h:
x1 = ("%.2f" % x)
glob_path = 'input/*_{}Vbr_*.txt'.format(x1)
import_files = glob.glob(glob_path)
print(x,import_files )
for index, file_name in enumerate(import_files ):
merged_data = pd.read_csv(file_name, header=None, delimiter="\t").values
if index==0:
summation = merged_data
else:
summation = summation + merged_data
averaging = summation/len(import_files)
np.savetxt('output/Ave_'+file_name[10:], averaging, delimiter="\t" )
我需要写一个通用脚本。但是,就我而言,现在我使用的脚本只有两个值 x = 1.50 和 x = 2.0 以使其变得简单。我尝试了 print(import_files) 并期望输出为:
['input\A_100Hz_Rate20Hz_5tot_1.50Max_1_.txt',
'input\A_100Hz_Rate20Hz_5tot_1.50Max_2_.txt',
'input\A_100Hz_Rate20Hz_5tot_1.50Max_3_.txt']
['input\A_100Hz_Rate20Hz_5tot_2.00Max_1_.txt',
'input\A_100Hz_Rate20Hz_5tot_2.00Max_2_.txt',
'input\A_100Hz_Rate20Hz_5tot_2.00Max_3_.txt']
但实际输出是(简而言之):
0.1 []
0.2 []
1.5 ['input\A_100Hz_Rate20Hz_5tot_1.50Max_1_.txt',
'input\A_100Hz_Rate20Hz_5tot_1.50Max_2_.txt',
'input\A_100Hz_Rate20Hz_5tot_1.50Max_3_.txt']
1.6 []
1.7 []
2.0['input\A_100Hz_Rate20Hz_5tot_2.00Max_1_.txt',
'input\A_100Hz_Rate20Hz_5tot_2.00Max_2_.txt',
'input\A_100Hz_Rate20Hz_5tot_2.00Max_3_.txt']
并且导致内核出错
np.savetxt('output/Ave_'+file_name[10:], averaging, delimiter="\t" )
NameError: name 'file_name' is not defined
拜托,有什么建议吗?
我认为你只需要测试 import_file
是否为空:
for x in h:
x1 = ("%.2f" % x)
glob_path = 'input/*_{}Vbr_*.txt'.format(x1)
import_files = glob.glob(glob_path)
print(x,import_files )
if len(import_files) != 0:
for index, file_name in enumerate(import_files ):
merged_data = pd.read_csv(file_name, header=None, delimiter="\t").values
if index==0:
summation = merged_data
else:
summation = summation + merged_data
averaging = summation/len(import_files)
np.savetxt('output/Ave_'+file_name[10:], averaging, delimiter="\t" )