【发布时间】:2016-11-11 11:41:49
【问题描述】:
我有很多名称未知的数据文件。我想出了一种方法让它们全部被读取和打印,但我想制作它们的图表,所以我需要一种可行的数据。
数据文件的排列非常整齐(标题的每一行都包含有关其中存储内容的信息),但是我在编写选择所需数据的脚本时遇到了麻烦。文件的前 50 多行包含我只需要使用其中一些的标题,这在使用类似以下内容时没有问题:
for filename in glob.glob(fullpath):
with open(filename, 'r') as f:
for line in f:
if 'xx' in line:
Do my thing
if 'yy' in line:
Do my thing etc.
但在标题下方有一个未确定列数和未确定行数的数据块(列数和每列是什么,在标题中指定)。这我无法通过例如 matplotlib 制作图表的方式来阅读。 (我可以通过手动将数据复制到一个单独的文件并将其读取为可绘制的格式来正确处理,但这不是我每次对每个文件都想做的事情......)数据开始之前的行包含非常有用的#eoh,但我想不出一种方法来结合前 50 多行的选择性读取,然后切换到将所有内容读取到数组中。如果有办法以更好的方式做我想做的事(包括选择地图以及查看哪些文件存在且可读),我愿意接受建议。
更新: @ImportanceOfBeingErnest 提出的解决方案似乎非常有用,但我没有让它发挥作用。 所以我将从答案中提到的数据开始。 列名按以下格式给出:
#COLUMNINFO= NUMBER1,单位,测量,NUMBER2
在这种格式中,number1 是列号,unit 是测量的单位,measurement 是测量的内容,number2 是测量的数字。 数据由空格分隔,但我怀疑这不会是问题。
我尝试在循环中实现读取标题以确定标题的结尾,这没有任何可见的效果,甚至检查中间结果的打印命令也没有显示。 一旦我将'print line'放在'for line in f:'之后,我想我可以看到出了什么问题,但似乎整个循环都被忽略了,包括由于文件完成读取而导致错误的break命令并且没有数据留待其他部分读取...
任何帮助将不胜感激。
【问题讨论】:
-
你看过
pandas吗?在按列排列数据时可以提供很大帮助,并且非常 matplotlib 友好..
标签: python python-2.7 matplotlib