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之前處理。
添加回答
舉報