Introduction to Python
Copyright TVS Limited | Private & Confidential | Page 1
Introduction to Python
Python is a high-level programming language
Open source and community driven
“Batteries Included”
• a standard distribution includes many modules
Dynamic typed
Source can be compiled or run just-in-time
Similar to perl, tcl, ruby
Copyright TVS Limited | Private & Confidential | Page 2
Why Python?
Unlike AML and Avenue, there is a considerable base of developers
already using the language
“Tried and true” language that has been in development since 1991
Can interface with the Component Object Model (COM) used by
Windows
Can interface with Open Source GIS toolsets
Copyright TVS Limited | Private & Confidential | Page 3
Why not Visual Basic?
Visual Basic is still the method of configuring and customizing ArcMap
If you have a button on the toolbar, it’s VB
Python scripts can be placed in ArcToolbox
Python can be run from the command line without ArcMap or
ArcCatalog being open
Using just the GIS Engine, lower overhead
Rapid prototyping, ease of authoring, etc.
Copyright TVS Limited | Private & Confidential | Page 4
Python Interfaces
IDLE – a cross-platform Python development environment
PythonWin – a Windows only interface to Python
Python Shell – running 'python' from the Command Line opens this
interactive shell
For the exercises, we'll use IDLE, but you can try them all and pick a
favorite
Copyright TVS Limited | Private & Confidential | Page 5
IDLE – Development Environment
IDLE helps you program
in Python by:
color-coding your program
code
debugging
auto-indent
interactive shell
Copyright TVS Limited | Private & Confidential | Page 6
Example Python
Hello World
print “hello world”
Prints hello world to
standard out
Open IDLE and try it out
yourself
Follow along using IDLE
Copyright TVS Limited | Private & Confidential | Page 7
More than just printing
Python is an object oriented language
Practically everything can be treated as an object
“hello world” is a string
Strings, as objects, have methods that return the result of a function on
the string
Copyright TVS Limited | Private & Confidential | Page 8
String Methods
Assign a string to a
variable
In this case “hw”
hw.title()
hw.upper()
hw.isdigit()
hw.islower()
Copyright TVS Limited | Private & Confidential | Page 9
String Methods
The string held in your variable remains the same
The method returns an altered string
Changing the variable requires reassignment
• hw = hw.upper()
• hw now equals “HELLO WORLD”
Copyright TVS Limited | Private & Confidential | Page 10
Other Python Objects
Lists (mutable sets of strings)
• var = [] # create list
• var = [‘one’, 2, ‘three’, ‘banana’]
Tuples (immutable sets)
• var = (‘one’, 2, ‘three’, ‘banana’)
Dictionaries (associative arrays or ‘hashes’)
• var = {} # create dictionary
• var = {‘lat’: 40.20547, ‘lon’: -74.76322}
• var[‘lat’] = 40.2054
Each has its own set of methods
Copyright TVS Limited | Private & Confidential | Page 11
Lists
Think of a list as a stack of cards, on which your information is written
The information stays in the order you place it in until you modify that
order
Methods return a string or subset of the list or modify the list to add or
remove components
Written as var[index], index refers to order within set (think card
number, starting at 0)
You can step through lists as part of a loop
Copyright TVS Limited | Private & Confidential | Page 12
List Methods
Adding to the List
• var[n] = object
replaces n with object
• var.append(object)
adds object to the end of the list
Removing from the List
• var[n] = []
empties contents of card, but preserves order
• var.remove(n)
removes card at n
• var.pop(n)
removes n and returns its value
Copyright TVS Limited | Private & Confidential | Page 13
Lists in ArcToolbox
You will create lists:
Layers as inputs
Attributes to match
Arrays of objects
You will work with lists:
List of field names
List of selected features
Copyright TVS Limited | Private & Confidential | Page 14
Tuples
Like a list, tuples are iterable arrays of objects
Tuples are immutable –
once created, unchangeable
To add or remove items, you must redeclare
Example uses of tuples
• County Names
• Land Use Codes
• Ordered set of functions
Copyright TVS Limited | Private & Confidential | Page 15
Dictionaries
Dictionaries are sets of key & value pairs
Allows you to identify values by a descriptive name instead of order in a
list
Keys are unordered unless explicitly sorted
Keys are unique:
• var[‘item’] = “apple”
• var[‘item’] = “banana”
• print var[‘item’] prints just banana
Copyright TVS Limited | Private & Confidential | Page 16
Indentation and Blocks
Python uses whitespace and indents to denote blocks of code
Lines of code that begin a block end in a colon:
Lines within the code block are indented at the same level
To end a code block, remove the indentation
You'll want blocks of code that run only when certain conditions are met
Copyright TVS Limited | Private & Confidential | Page 17
Conditional Branching
if and else
if variable == condition:
#do something based on v == c
else:
#do something based on v != c
elif allows for additional branching
if condition:
elif another condition:
…
else: #none of the above
Copyright TVS Limited | Private & Confidential | Page 18
Looping with For
For allows you to loop over a block of code a set
number of times
For is great for manipulating lists:
a = ['cat', 'window', 'defenestrate']
for x in a:
print x, len(x)
Results:
cat 3
window 6
defenestrate 12
Copyright TVS Limited | Private & Confidential | Page 19
Looping with For
We could use a for loop to perform geoprocessing tasks on each layer in
a list
We could get a list of features in a feature class and loop over each,
checking attributes
Anything in a sequence or list can be used in a For loop
Just be sure not to modify the list while looping
Copyright TVS Limited | Private & Confidential | Page 20
Modules
Modules are additional pieces of code that further extend Python’s
functionality
A module typically has a specific function
• additional math functions, databases, network…
Python comes with many useful modules
arcgisscripting is the module we will use to load ArcGIS toolbox
functions into Python
Copyright TVS Limited | Private & Confidential | Page 21
Modules
Modules are accessed using import
• import sys, os # imports two modules
Modules can have subsets of functions
• os.path is a subset within os
Modules are then addressed by modulename.function()
• sys.argv # list of arguments
• filename = os.path.splitext("points.txt")
• filename[1] # equals ".txt"
Copyright TVS Limited | Private & Confidential | Page 22
Files
Files are manipulated by creating a file object
• f = open("points.txt", "r")
The file object then has new methods
• print f.readline() # prints line from file
Files can be accessed to read or write
• f = open("output.txt", "w")
• f.write("Important Output!")
Files are iterable objects, like lists
Copyright TVS Limited | Private & Confidential | Page 23
Error Capture
Check for type assignment errors, items not in a list, etc.
Try & Except
try:
a block of code that might have an error
except:
code to execute if an error occurs in "try"
Allows for graceful failure
– important in ArcGIS
Copyright TVS Limited | Private & Confidential | Page 24
Additional Python Resources
Python Homepage
http://www.python.org/
Dive Into Python
http://www.diveintopython.org/
Learning Python, 3rd Edition
http://www.oreilly.com/catalog/9780596513986/
Getting Started Writing Geoprocessing Scripts
Available on ESRI's support page
Copyright TVS Limited | Private & Confidential | Page 25