1 回答
TA贡献1865条经验 获得超7个赞
首先,您不需要将文件写入files.txt的单独循环。您可以将整个操作作为os.listdir循环的一部分进行。您只需要形成每个文件的完整路径(np.loadtxt稍后需要传递的路径)。像这样:
import os
data_path = os.path.abspath("/media/linux/DATADISK")
for f in os.listdir(data_path):
f_path = os.path.join(data_path, f)
print(f_path)
# Output:
# /media/linux/DATADISK/gdf.dat
# /media/linux/DATADISK/klj.txt
然后,您可以使用delimiter参数 ofnp.loadtxt指定每个文件的每一行用空格分隔。如果您只对第一列感兴趣,您输入的usecols参数已经正确。
data = np.loadtxt(f_path, delimiter=' ', usecols=0)
print(data)
# Output:
# /media/linux/DATADISK/gdf.dat
# [4. 2. 8.]
# /media/linux/DATADISK/klj.txt
# [4. 6. 6.]
那么你已经把代码的平均部分正确了。但我建议先打开average.txt文件,这样您就不需要open在每个循环中都打开它。
with open("average.txt", "a") as output:
for f in os.listdir(data_path):
...
average = (data[0] + data[-1]) / 2
output.write(str(average) + "\n")
把它们放在一起:
import numpy as np
import os
data_path = os.path.abspath("/media/linux/DATADISK")
with open("average.txt", "a") as output:
for f in os.listdir(data_path):
f_path = os.path.join(data_path, f)
data = np.loadtxt(f_path, delimiter=' ', usecols=0)
average = (data[0] + data[-1]) / 2
output.write(str(average) + "\n")
样本平均.txt:
6.0
5.0
订单将取决于 的返回os.listdir,因此gdf.bat将在klj.txt之前处理。
添加回答
举报