1 回答

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
首先,您不需要將文件寫入files.txt的單獨(dú)循環(huán)。您可以將整個(gè)操作作為os.listdir循環(huán)的一部分進(jìn)行。您只需要形成每個(gè)文件的完整路徑(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參數(shù) ofnp.loadtxt指定每個(gè)文件的每一行用空格分隔。如果您只對(duì)第一列感興趣,您輸入的usecols參數(shù)已經(jīng)正確。
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.]
那么你已經(jīng)把代碼的平均部分正確了。但我建議先打開average.txt文件,這樣您就不需要open在每個(gè)循環(huán)中都打開它。
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之前處理。
添加回答
舉報(bào)