我正在尝试从here读取光谱图文件。当我运行下面的代码时,文件中的结果将填充一个列表。但是,行“%.12f”上打印的所有值与手动打印的元素之间存在差异:例如,正确的初始值为0.751491727533,打印列表中所有元素的for循环从0.003396112601开始。这是一个非常奇怪的区别,因为for循环似乎只生成gobbledy gook元素,但是数组的手动索引生成了正确的元素。这不是一个大问题,因为我显然可以按顺序索引正确的元素,但这让我绞尽脑汁,试图找出为什么行为如此不同。你知道吗
def skipToFrame(spectrogram, offset):
SAMPLE_RATE =22050
HOP_LENGTH = 512
FRAME_TIME = HOP_LENGTH/SAMPLE_RATE
SHIFT_FRAMES = round(offset/FRAME_TIME)
a_list = []
with open(spectrogram) as spectrogram_file:
for line in spectrogram_file.readlines():
for entry in line.split(" "):
a_list.append(float(entry))
spectrogram_file.close()
for entry in a_list:
print("%.12f" % entry)
print("list length is " + str(len(a_list)))
print(a_list[0])
def main():
track_left_spectrogram = "path to file"
skipToFrame(track_left_spectrogram,1)
if __name__ == '__main__' :
main()
预期的结果应该是,在a\u list循环的for条目中,a\u list中的值应该按照this文件的值打印出来。手动索引a_列表显然给出了正确的结果,但是使用for循环可能会导致元素无序或非常奇怪。你知道吗
输出为
注意,在open函数中使用
with
语句时,不需要在结尾关闭文件,因为with将自动为您关闭它代码似乎工作得很好,如果只打印前10个,它将显示正确的顺序。如果你把它们全部打印出来,我想你的终端不能显示946176行,所以它会像我的一样把它切断。你知道吗
相关问题 更多 >
编程相关推荐