John wrote:
> I have a file sitelocations:
>
> STN_id[1]=AAA
> STNlat[1]=58.800000
> STNlon[1]=17.400000
> STNelv[1]=20
> STN_id[2]=BBB
> STNlat[2]=42.450000
> STNlon[2]=25.583333
> STNelv[2]=2925
>
> which in shell scripts I can simple 'source'. In Python I have to:
> sitesFile=file('sitelocations','r')
> sites=sitesFile.readlines()
> i=0;
> for l in sites:
> if i==0:
> STN_id.append(l.split('=')[1].strip('\n')); i+=1;
> elif i==1:
> STNlat.append(l.split('=')[1].strip('\n')); i+=1;
> elif i==2:
> STNlon.append(l.split('=')[1].strip('\n')); i+=1;
> else:
> STNelv.append(l.split('=')[1].strip('\n')); i=0;
>
> Is there a better way??
>
> Thanks!
>
In your code you don't define your lists before appending to them, I
guess that will cause an error.
>From the 'file()' entry in the Python manuals :
"""
When opening a file, it's preferable to use open() instead of invoking
this constructor directly. file is more suited to type testing (for
example, writing "isinstance(f, file)").
"""
This might work :
# Set initial conditions
STN_id = list()
STNlat = list()
STNlon = list()
STNelv = list()
LDict = dict(STN_id=STN_id, STNlat=STNlat, STNlon=STNlon, STNelv=STNelv)
# Do the job
for L in open('sitelocations','r') :
LDict[L.split('[')[0]].append(L.split('=')[1].strip('\n'))
HTH
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor