[Tutor] raw_input() slice list
questions anon
questions.anon at gmail.com
Wed Sep 28 09:58:19 CEST 2011
Excellent, thank you
and yes I need to work on how to catch and handle exceptions
Thanks again!
On Wed, Sep 28, 2011 at 4:13 PM, bob gailer <bgailer at gmail.com> wrote:
> On 9/27/2011 11:18 PM, questions anon wrote:
>
> I would like to use user_input() to decide how to slice a list.
> This works fine until I try to leave it blank to try and select the whole
> list [:]
> I have posted the section of interest below and the error I get when I try
> to press enter. Further below that is the entire code.
> Any feedback will be greatly appreciated.
> *
> section of code of interest:*
> startperiod=int(raw_input("Start slice (e.g. 1 ): "))
> endperiod=int(raw_input("End slice (e.g. 2): "))
> skipperiod=int(raw_input("skip slice (e.g. 1): "))
>
> if startperiod=="" and endperiod=="" and skipperiod=="":
> startperiod=""
> endperiod=""
> skipperiod=""
>
>
> int() expects a character representation of an integer. An empty string
> will raise the exception you reported.
>
> startperiod will NEVER == "", as it will be an integer.
>
> The entire if statement does nothing! Discard it.
>
> Defer applying int().
>
> Then you can check startperiod etc for equality to "".
>
> if startperiod == "":
> startperiod = None
> else:
> startperiod = int(startperiod)
> if endperiod == "":
>
> endperiod = None
> else:
> endperiod = int(endperiod)
> if skipperiod == "":
> skipperiod = None
> else:
> skipperiod= int(skipperiod)
>
> AND BE PREPARED to catch & handle exceptions in case user enters a
> non-integer value.
>
>
> for (path, dirs, files) in os.walk(MainFolder):
> for dir in dirs:
> print dir
> path=path+'/'
>
> for ncfile in files:
> if ncfile[-3:]=='.nc':
> print "dealing with ncfiles:",
> path+ncfile
> ncfile=os.path.join(path,ncfile)
> ncfile=Dataset(ncfile, 'r+', 'NETCDF4')
>
> variable=ncfile.variables[ncvariablename][:]
> TIME=ncfile.variables['time'][:]
>
> fillvalue=ncfile.variables[ncvariablename]._FillValue
> ncfile.close()
>
> for variable, TIME in
> zip((variable[startperiod:endperiod:skipperiod]),(TIME[startperiod:endperiod:skipperiod])):
>
>
> *the error:*
>
> Traceback (most recent call last):
> File "<pyshell#27>", line 1, in <module>
> plotrawdata('TSFC')
> File "D:\My Dropbox\Python_code\functions.py", line 39, in plotrawdata
> startperiod=int(raw_input("Start slice (e.g. 1 ): "))
> ValueError: invalid literal for int() with base 10: ''
>
>
> *THE WHOLE PROGRAM:*
> from netCDF4 import Dataset
> import numpy as N
> import matplotlib.pyplot as plt
> from numpy import ma as MA
> from mpl_toolkits.basemap import Basemap
> from netcdftime import utime
> from datetime import datetime
> import os
> import matplotlib.colors as mc
> import matplotlib.colorbar as c
>
> OutputFolder=r"D:/DSE_work/temp_samples2/"
> MainFolder=r"D:/DSE_work/temp_samples2/"
>
>
> def plotrawdata(variable):
> if variable=='TSFC':
> ncvariablename='T_SFC'
> MainFolder=r"D:/DSE_work/temp_samples2/"
> ticks=[-5,0,5,10,15,20,25,30,35,40,45,50]
> Title='Surface Temperature'
>
> elif variable=='RHSFC':
> ncvariablename='RH_SFC'
>
> MainFolder=r"E:/DSE_BushfireClimatologyProject/griddeddatasamples/temp_samples6/"
> ticks=[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 101]
> Title='Surface RH'
>
>
> fileforlatlon=Dataset("D:/DSE_work/temp_samples2/2020/01/IDZ00026_VIC_ADFD_T_SFC.nc",
> 'r+', 'NETCDF4')
> LAT=fileforlatlon.variables['latitude'][:]
> LON=fileforlatlon.variables['longitude'][:]
>
> startperiod=int(raw_input("Start slice (e.g. 1 ): "))
> endperiod=int(raw_input("End slice (e.g. 2): "))
> skipperiod=int(raw_input("skip slice (e.g. 1): "))
>
> if startperiod=="" and endperiod=="" and skipperiod=="":
> startperiod=str("")
> endperiod=str("")
> skipperiod=str("")
>
>
> for (path, dirs, files) in os.walk(MainFolder):
> for dir in dirs:
> print dir
> path=path+'/'
>
> for ncfile in files:
> if ncfile[-3:]=='.nc':
> print "dealing with ncfiles:",
> path+ncfile
> ncfile=os.path.join(path,ncfile)
> ncfile=Dataset(ncfile, 'r+', 'NETCDF4')
>
> variable=ncfile.variables[ncvariablename][:]
> TIME=ncfile.variables['time'][:]
>
> fillvalue=ncfile.variables[ncvariablename]._FillValue
> ncfile.close()
>
> for variable, TIME in
> zip((variable[startperiod:endperiod:skipperiod]),(TIME[startperiod:endperiod:skipperiod])):
> #for variable, TIME in
> zip((variable[sliceperiod]),(TIME[sliceperiod])):
>
> cdftime=utime('seconds since
> 1970-01-01 00:00:00')
>
> ncfiletime=cdftime.num2date(TIME)
> print ncfiletime
> timestr=str(ncfiletime)
> d = datetime.strptime(timestr,
> '%Y-%m-%d %H:%M:%S')
> date_string =
> d.strftime('%Y%m%d_%H%M')
> #Set up basemap using mercator
> projection
> http://matplotlib.sourceforge.net/basemap/doc/html/users/merc.html
> map =
> Basemap(projection='merc',llcrnrlat=-40,urcrnrlat=-33,
>
> llcrnrlon=139.0,urcrnrlon=151.0,lat_ts=0,resolution='i')
> x,y=map(*N.meshgrid(LON,LAT))
>
> map.drawcoastlines(linewidth=0.5)
> #map.readshapefile(shapefile1,
> 'DSE_REGIONS')
> map.drawstates()
>
> plt.title(Title+' %s
> UTC'%ncfiletime)
>
> CS = map.contourf(x,y,variable,
> ticks, cmap=plt.cm.jet)
> l,b,w,h =0.1,0.1,0.8,0.8
> cax = plt.axes([l+w+0.025, b,
> 0.025, h], )
> cbar=plt.colorbar(CS, cax=cax,
> drawedges=True)
>
> #save map as *.png and plot
> netcdf file
>
> plt.savefig((os.path.join(OutputFolder,
> ncvariablename+date_string+'UTC.png')))
> plt.show()
> plt.close() # must use
> plt.close() so that colorbar works!
>
>
>
>
>
>
>
>
>
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:http://mail.python.org/mailman/listinfo/tutor
>
>
>
> --
> Bob Gailer919-636-4239
> Chapel Hill NC
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20110928/f226bd21/attachment-0001.html>
More information about the Tutor
mailing list