[Numpy-discussion] Reading footer lines
Daπid
davidmenhur at gmail.com
Tue Aug 13 09:01:34 EDT 2013
On 13 August 2013 14:20, Resmi <l.resmi at gmail.com> wrote:
> As a workaround, I've tried using os.system along with grep. And I get the
> following output :
>
>>>> os.system("grep -e 'tx' 'data.dat' ")
> ## tx = 2023.06
> 0
>
> Why is there a 0 in the output? The file has no blank lines.
That 0 corresponds to the exit status of os.system, as there were no
errors, it returns a 0.
My idea would be to read the file and store it into a StringIO. That
can be fed to np.loadtxt to extract the numbers, and look for your
number. My (untested) attempt:
import StringIO
with datafile open as f:
... raw_data = StringIO.StringIO()
... raw_data.write(f.read())
data = np.loadfromtxt(raw_data)
numbers = [float(line.split['='][1].strip()) for line in
raw_data.readlines() if line[0] == '#']
If there is only one number there and it is after all the data, you
could skip them all. From the shape of data you know there are N lines
of data:
for _ in range(N):
... raw_data.readline()
while True:
... line = raw_data.readline()
... if line[0] == '#':
...... number = float(line.split['='][1].strip())
...... break
Alternatively, you could also use seek to put the pointer a certain
distance from the end of the file and start from there, but this could
cause problems in Windows.
David.
More information about the NumPy-Discussion
mailing list