You may directly export waveform data to any ASCII format available by ObsPy using the write() method on the generated Stream object.
>>> from obspy.core import read
>>> stream = read('http://examples.obspy.org/RJOB20090824.ehz')
>>> stream.write('outfile.ascii', format='SLIST')
The following ASCII formats are currently supported:
SLIST, a ASCII time series format represented with a header line followed by a sample lists (see also SLIST format description):
TIMESERIES BW_RJOB__EHZ_D, 6001 samples, 200 sps, 2009-08-24T00:20:03.000000, SLIST, INTEGER,
288 300 292 285 265 287
279 250 278 278 268 258
...
TSPAIR, a ASCII format where data is written in time-sample pairs (see also TSPAIR format description):
TIMESERIES BW_RJOB__EHZ_D, 6001 samples, 200 sps, 2009-08-24T00:20:03.000000, TSPAIR, INTEGER,
2009-08-24T00:20:03.000000 288
2009-08-24T00:20:03.005000 300
2009-08-24T00:20:03.010000 292
2009-08-24T00:20:03.015000 285
2009-08-24T00:20:03.020000 265
2009-08-24T00:20:03.025000 287
...
SH_ASC, ASCII format supported by Seismic Handler:
DELTA: 5.000000e-03
LENGTH: 6001
START: 24-AUG-2009_00:20:03.000
COMP: Z
CHAN1: E
CHAN2: H
STATION: RJOB
CALIB: 1.000000e+00
2.880000e+02 3.000000e+02 2.920000e+02 2.850000e+02
2.650000e+02 2.870000e+02 2.790000e+02 2.500000e+02
...
In the following, a small Python script is shown which converts each Trace of a seismogram file to an ASCII file with a custom header. Waveform data will be multiplied by a given calibration factor and written using NumPy‘s savetxt() function.
"""
USAGE: export_seismograms_to_ascii.py in_file out_file calibration
"""
from obspy.core import read
import numpy as np
import sys
try:
in_file = sys.argv[1]
out_file = sys.argv[2]
calibration = float(sys.argv[3])
except:
print __doc__
raise
st = read(in_file)
for i, tr in enumerate(st):
f = open("%s_%d" % (out_file, i), "w")
f.write("# STATION %s\n" % (tr.stats.station))
f.write("# CHANNEL %s\n" % (tr.stats.channel))
f.write("# START_TIME %s\n" % (str(tr.stats.starttime)))
f.write("# SAMP_FREQ %f\n" % (tr.stats.sampling_rate))
f.write("# NDAT %d\n" % (tr.stats.npts))
np.savetxt(f, tr.data * calibration, fmt="%f")
f.close()