[Tutor] raw_input() slice list
bob gailer
bgailer at gmail.com
Wed Sep 28 08:13:20 CEST 2011
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 Gailer
919-636-4239
Chapel Hill NC
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20110928/87de9954/attachment-0001.html>
More information about the Tutor
mailing list