3W - Geography 465 – Reviewing Object Types, Functions, and Modules
A review is in order for objects, functions, and modules – just as a status check for where we are in Python. Below we review some highlights about what we have seen so far: built-in object types, functions __builtins__, and modules os, os.path, sys, string, math, time, calendar, webbrowser, win32com (win32com.client)
A typical start of a python script:
#Import standard library modules
import win32com.client, sys, os
gp = win32com.client.Dispatch(“esriGeoprocessing.GpDispatch.1”)
- This imports the system, operating system, and Windows 32 modules to the script.
- The sys module refers to the Python system and will be used to access user-specified inputs.
- os module provides easy access to the most fundamental tools of the operating system.
- Some of the os module’s filename manipulation tools are used in this script.
- gp can be used to access all geoprocessing functionality through this variable
We can use ArcGIS Desktop Help to access scripts – in the content window navigate to…for example “point distance” (see bottom of image)
Built-in Object types – make programming easier (Table 4-1, LP p. 55).
Object type Example
Numbers 3.1415, 1234, 999L, 3+4j
Strings ‘spam’, “guido’s”
Lists [1, [2, ‘three’], 4] # ordered collections of objects; index start at 0
Dictionaries {‘food’: ‘spam’, ‘taste’: ‘yum’} # collections of objects indexed by key
Tuples (1, ‘spam’, 4, ‘U’) # ordered set, not indexed
Files text = open(‘eggs’, ‘r’).read()
Reading for above, LP list pp 97-99, dictionary pp 103-4, tuples pp 112-4
assignments LP pp 68, 134-40 p 135 Table 8-2
Operation Interpretation
spam = ‘Spam’ # basic form
spam, ham = ‘yum’, ‘YUM’ # tuple assignment
[spam, ham] = ‘yum’, ‘YUM’ # list assignment
Spam = ham = ‘lunch’ # multiple target
Boolean/truth values LP pp 154, 122-3 Table 7-4 p 122
Object Value
“spam” True
“” False
[] False
{} False
1 True
0.0 False
None False
type hierarchies LP p 124 Figure 7-3
if..then pp 146-148
if <test>: # if test
<statements1> # Associated block
elif <test2>: # Optional elifs
<statements2> # Associated block
else: # Optional else
<statements3> # Associated block
while Loops LP pp 155-6
while <test>: #Loop test
<statements> # Repeated body
else: # Optional else
<statements> # Perform when break is hit
for Loops LP pp 160-2
for <target> in <object>: #Assign object items to target
<statements> # Repeated body: use target
else:
<statements> # If break not hit
try...except LP pp 393-5
catch and recover from exceptions raised by Python, or by user/programmer
> try:
… fetcher(x,4)
… expect IndexError:
… print ‘got exception’
…
got exception
The try statement defines the beginning of a block of code that will be handled by its associated exception handler, or except statement. It is good practice to use exception handling in any script using the geoprocessor so its error messages can be propagated back to the user. This also allows the script to exit gracefully and return informative messages instead of simply causing a system error.
Built-in Functions - Standard functions that are 'on' when Python starts.
http://www.python.org/doc/2.1/lib/built-in-funcs.html#built-in-funcs
There are many useful for basics, but would likely need more. A selection might include:
max(s[, args...])
min(s[, args...])
open(filename[, mode[, bufsize]])
range([start,] stop[, step])
range([start,] stop[, step])
raw_input([prompt])
tuple(sequence)
Modules – foster code reuse; a way to package code; important instructions for modules:
import – fetches a module as a whole
from – fetches a particular names from a module
reload – reload a module’s code without stopping Python (actually a built-in function)
The os and sys modules are important for getting Python to integrate and manage with the local os and system.
os Module - Miscellaneous OS interfaces
http://www.python.org/doc/2.1/lib/module-os.html
This module provides a more portable way of using operating system (OS) dependent functionality than importing an OS dependent built-in module to enhance portability.
os.path Module - Common pathname manipulations
http://www.python.org/doc/2.1/lib/module-os.path.html
This module implements some useful functions on pathnames.
Subsections
· 6.1.1 Process Parameters
· 6.1.2 File Object Creation – important
· 6.1.3 File Descriptor Operations – important
· 6.1.4 Files and Directories – particularly important: directory settings, working directories and disk operations, e.g., chmod, mkdir, chdir
· 6.1.5 Process Management
· 6.1.6 Miscellaneous System Information
sys Module - System-specific parameters and functions
http://www.python.org/doc/2.1/lib/module-sys.html
This module provides access to some variables used or maintained by the interpreter and to functions that interact strongly with the interpreter. It is always available.
In what way are these functions significant to your programming effort?
string Module - Common string functions (operations)
http://www.python.org/doc/2.1/lib/module-string.html
Many functions of the string module are built-in, especially with the more current releases. However, getting more detailed with strings might require importing the string module.
Which of these functions would you never think you would use in a GIS application?
math Module - Mathematical functions
http://www.python.org/doc/2.1/lib/module-math.html
This module is always available. It provides access to the mathematical functions defined by the C standard.
In what data processing context might these functions come in handy?
time Module - Time access and conversions
http://www.python.org/doc/2.1/lib/module-time.html
This module provides various time-related functions. It is always available, but not all functions are available on all platforms.
For what kinds of applications might you use one or more functions from this module?
calendar Module - General calendar-related functions
http://www.python.org/doc/2.1/lib/module-calendar.html
This module allows you to output calendars, and provides additional useful functions related to the calendar. By default, these calendars have Monday as the first day of the week, and Sunday as the last (the European convention). Use setfirstweekday() to set the first day of the week to Sunday (6) or to any other weekday.
How might we use the calendar in a GIS application? GIS software often does not implement the time aspect of data (space, attribute, time). Examine the GP model diagram. What calendar functions do you have available through it?
webbrowser Module - Convenient Web-browser controller
http://www.python.org/doc/2.1/lib/module-webbrowser.html
The webbrowser module provides a very high-level interface to allow displaying Web-based documents to users.
Why would we need a webbrowser for a gp application?
Tkinter (Tk module) pp 496-8 – a forms editor interface
The Tkinter toolkit is a Python-specific interface to a non-Python GUI library called Tk. Tk is the GUI toolkit most commonly chosen by Python programmers because it provides professional-looking GUIs within a fairly easy-to-use system. In addition, the Python/Tk interface comes with most Python distributions. Although the interfaces are not exactly like Mac, Windows or Unix, they are close look alikes.
Insights and precautions for win32com
Scripting with win32com, win32com.client and Dispatch in 9.1 versus 9.2
http://support.esri.com/index.cfm?fa=knowledgebase.techarticles.articleShow&d=31910
ArcGIS 9.1 included PythonWin 2.1 as the default editor. ArcGIS 9.2 does ship with PythonWin 2.4.1, however it is not included in the installation. There are two reasons why PythonWin 2.4.1 is not included in the installation. First off, there was a change in the PythonWin 2.4.1 installer that made it incompatible with the ArcGIS installer. Secondly, PythonWin is not required for Python scripts to run as it was in 9.1.
The win32com package
Document describes the win32com package in general terms. The COM support can be thought of as existing in 2 main portions - the C++ support code (the core PythonCOM module), and helper code, implemented in Python. The total package is known as "win32com".
http://aspn.activestate.com/ASPN/docs/ActivePython/2.4/pywin32/html/com/win32com/HTML/package.html
Win32Com Readme
http://aspn.activestate.com/ASPN/docs/ActivePython/2.4/pywin32/html/com/win32com/readme.htm
Win32Com doorway
In every script that calls the gp, the win32com is the doorway into the gp. It is specific to PythonWin, but provides the impression that it isn't required when using IDLE as the code editor. A power to knowing more about the module is an ability to interact with other programs like Word, Excel, browsers and the like.
A quest for a more complete list of essential modules that enable or extend Python's relations with the gp should look into the ArcGIS desktop help files. There are 1000's of scripts and script examples that have the classic gp=win32com.client along with imports of other modules used at those times.