我有一个包含几个不同文件的文件夹(txt,dat,jpg),我需要读取所有带有“triang.dat”结尾的文件。这些文件包含文件名的时间,如:
“NIK_054504_triang.dat”
我设法找到文件并将时间转换为秒:
mypath = '/home/rmesqui/Desktop/Upleg/New/'
k=0
for file in os.listdir(mypath):
if file.endswith("triang.dat"):
k = k+1
filenames = np.zeros(k)
print filenames
k = 0
for file in os.listdir(mypath):
if file.endswith("triang.dat"):
#filenames[k] = file
filenames[k] =
float(file[4:6])*3600.+float(file[6:8])*60.+float(file[8:10])
k = k+1
timearr = np.sort(filenames)-np.min(filenames)
但是我必须对文件名进行排序,因为读取文件名的过程会返回无序文件。但是,我需要按顺序读取这些文件,因为数据获取的时间对于程序的其余部分很重要。在,我需要有一个数组,如:
lat1 = np.zeros(shape=(100+3,numberOfFiles))
其中“+3”是时间,对于我们的示例,小时= 05,分钟= 45,秒= 04.“100”将是文件中特定列的内容。
谢谢你们!
答案 0 :(得分:1)
我找到了一种简单的方法
for file in os.listdir(mypath):
if file.endswith("triang.dat"):
k = k+1
filenames = np.zeros(k)
k = 0
for file in os.listdir(mypath):
if file.endswith("triang.dat"):
#filenames[k] = file
filenames[k] = float(file[4:6])*3600.+float(file[6:8])*60.+float(file[8:10])
k = k+1
答案 1 :(得分:0)
还不完全确定问题究竟在哪里。那么这个怎么样:
result = []
for filename in os.listdir(mypath):
if filename.endswith("triang.dat"):
hours, minutes, seconds = int(filename[4:6]), int(filename[6:8]), int(filename[8:10])
with open(filename, 'r') as f:
# do whatever needed to read the content from the file
your_100_values_read_from_the_file = range(100)
result.append([hours, minutes, seconds] + your_100_values_read_from_the_file)
# result is now a list of lists. sort by timestamp
result.sort(key=lambda x: (x[0], x[1], x[2]))
# create your array and transpose since you want one file per column, not per row
lat1 = np.array(result).T
print (lat1.shape) # should be (103, numberOfFiles)