Today is a free download without charge Download

Michael Driscoll - Python 101 [2016, PDF, ENG]

Reply to topic
 
Author
Message

Omen ®

Longevity: 8 years 4 months

Posts: 181087

Торрент-статистика

Post 10-Nov-2016 01:00

[Quote]

Python 101
Год издания: 2016
Автор: Michael Driscoll
Жанр или тематика: Python
Издательство: Lean Publishing
Язык: Английский
Формат: PDF
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Да
Описание: Learn how to program with Python 3 from beginning to end. My book is made primarily for beginners. However, at least two-thirds of it is aimed at intermediate programmers. You may be wondering how that works. The book will be split into five parts.
Part One
The first part is the beginner section. In it you will learn all the basics of Python. From Python types (strings, lists, dictionaries) to conditional statements to loops. You will also learn about comprehensions, functions and classes and everything in between!
Part Two
This section will be a curated tour of the Python Standard Library. The intent isn't to cover everything in it, but instead it is to show the reader that you can do a lot with Python right out of the box. We'll be covering the modules I find the most useful in day-to-day programming tasks, such as os, sys, logging, threads, and more.
Part Three
An all intermediate section covering lambda, decorators, properties, debugging, testing and profiling.
Part Four
Now things get really interesting! In part four, we will be learning how to install 3rd party libraries (i.e. packages) from the Python Package Index and other locations. We will cover easy_install and pip. This section will also be a series of tutorials where you will learn how to use the packages you download. For example, you will learn how to download a file, parse XML, use an Object Relational Mapper to work with a database, etc.
Part Five
The last section of the book will cover how to share your code with your friends and the world! You will learn how to package it up and share it on the Python Package Index (i.e. how to create an egg or wheel). You will also learn how to create executables using py2exe, bb_freeze, cx_freeze and PyInstaller. Finally you will learn how to create an installer using Inno Setup.

Примеры страниц



Оглавление

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
A Brief History of Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Reader Feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Errata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Part I - Learning the Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Chapter 1 - IDLE Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Using IDLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Other Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Chapter 2 - All About Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
How to Create a String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
String Concatenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
String Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
String Slicing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
String Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Chapter 3 - Lists, Tuples and Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Chapter 4 - Conditional Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
The if statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Boolean Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Checking for Nothing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Special Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
if __name__ == “__main__” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Chapter 5 - Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
The for Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
The while Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
What else is for in loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Chapter 6 - Python Comprehensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
List Comprehensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Dictionary Comprehensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Set Comprehensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Chapter 7 - Exception Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Common Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
How to Handle Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
The finally Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
try, except, or else! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Chapter 8 - Working with Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
How to Read a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
How To Read Files Piece by Piece . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
How to Read a Binary File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Writing Files in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Using the with Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Catching Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Chapter 9 - Importing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
import this . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Using from to import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Importing Everything! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Chapter 10 - Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
An Empty Function (the stub) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Passing Arguments to a Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Keyword Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
*args and **kwargs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
A Note on Scope and Globals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Coding Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Chapter 11 - Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Creating a Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
What is self? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Subclasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Part II - Learning from the Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Chapter 12 - Introspection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
The Python Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
The Python Dir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Python Help! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Chapter 13 - The csv Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Reading a CSV File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Writing a CSV File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Chapter 14 - configparser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Creating a Config File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
How to Read, Update and Delete Options . . . . . . . . . . . . . . . . . . . . . . . . . . 82
How to Use Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Chapter 15 - Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Creating a Simple Logger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
How to log From Multiple Modules (and Formatting too!) . . . . . . . . . . . . . . . . . 87
Configuring Logs for Work and Pleasure . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Chapter 16 - The os Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
os.name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
os.environ, os.getenv() and os.putenv() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
os.chdir() and os.getcwd() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
os.mkdir() and os.makedirs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
os.remove() and os.rmdir() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
os.rename(src, dst) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
os.startfile() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
os.walk() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
os.path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
os.path.basename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
os.path.dirname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
os.path.exists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
os.path.isdir / os.path.isfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
os.path.join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
os.path.split . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Chapter 17 - The email / smtplib Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Email Basics - How to Send an Email with smtplib . . . . . . . . . . . . . . . . . . . . . 104
Sending Multiple Emails at Once . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Send email using the TO, CC and BCC lines . . . . . . . . . . . . . . . . . . . . . . . . . 109
Add an attachment / body using the email module . . . . . . . . . . . . . . . . . . . . . 110
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Chapter 18 - The sqlite Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
How to Create a Database and INSERT Some Data . . . . . . . . . . . . . . . . . . . . . 113
Updating and Deleting Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Basic SQLite Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Chapter 19 - The subprocess Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
The call function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
The Popen Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Learning to Communicate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Chapter 20 - The sys Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
sys.argv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
sys.executable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
sys.exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
sys.path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
sys.platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
sys.stdin / stdout / stderr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Chapter 21 - The threading module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Using Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Writing a Threaded Downloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Using Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Chapter 22 - Working with Dates and Time . . . . . . . . . . . . . . . . . . . . . . . . . . 135
The datetime Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
datetime.date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
datetime.datetime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
datetime.timedelta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
The time Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
time.ctime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
time.sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
time.strftime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
time.time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Chapter 23 - The xml module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Working with minidom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Parsing with ElementTree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
How to Create XML with ElementTree . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
How to Edit XML with ElementTree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
How to Parse XML with ElementTree . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Part III - Intermediate Odds and Ends . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Chapter 24 - The Python Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
How to Start the Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Stepping Through the Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Setting breakpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Chapter 25 - Decorators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
A Simple Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Creating a Logging Decorator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Built-in Decorators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
@classmethod and @staticmethod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Python Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Replacing Setters and Getters with a Python property . . . . . . . . . . . . . . . . . . . . 165
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Chapter 26 - The lambda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Tkinter + lambda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Chapter 27 - Code Profiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Profiling Your Code with cProfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Chapter 28 - An Intro to Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Testing with doctest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Running doctest via the Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Running doctest Inside a Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Running doctest From a Separate File . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Test Driven Development with unittest . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
The First Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
The Second Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
The Third (and Final) Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Other Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Part IV - Tips, Tricks and Tutorials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Chapter 29 - Installing Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Installing from Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Using easy_install . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Using pip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
A Note on Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Chapter 30 - ConfigObj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Using a configspec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Chapter 31 - Parsing XML with lxml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Parsing XML with lxml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Parsing the Book Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Parsing XML with lxml.objectify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Creating XML with lxml.objectify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Chapter 32 - Python Code Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Getting Started with pylint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Analyzing Your Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Getting Started with pyflakes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Chapter 33 - The requests package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Using requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
How to Submit a Web Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Chapter 34 - SQLAlchemy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
How to Create a Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
How to Insert / Add Data to Your Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
How to Modify Records with SQLAlchemy . . . . . . . . . . . . . . . . . . . . . . . . . 222
How to Delete Records in SQLAlchemy . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
The Basic SQL Queries of SQLAlchemy . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Chapter 35 - virtualenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Creating a Virtual Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Part V - Packaging and Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Chapter 36 - Creating Modules and Packages . . . . . . . . . . . . . . . . . . . . . . . . . 230
How to Create a Python Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
How to Create a Python Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Chapter 37 - How to Add Your Code to PyPI . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Creating a setup.py File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Registering Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Uploading Packages to PyPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Chapter 38 - The Python egg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Creating an egg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Chapter 39 - Python wheels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Creating a wheel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Installing a Python wheel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Chapter 40 - py2exe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Creating a Simple GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
The py2exe setup.py file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Creating an Advanced setup.py File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Chapter 41 - bbfreeze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Getting Started with bbfreeze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Using bbfreeze’s Advanced Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Chapter 42 - cx_Freeze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Getting Started with cx_Freeze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Advanced cx_Freeze - Using a setup.py File . . . . . . . . . . . . . . . . . . . . . . . . . 258
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Chapter 43 - PyInstaller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Getting Started with PyInstaller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
PyInstaller and wxPython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Chapter 44 - Creating an Installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Getting Started with GUI2Exe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Let’s Make an Installer! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Appendix A: Putting It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
The Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
The Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Breaking the Specification Down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Turning Chapters Into a Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Reading the Customer CSV File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Emailing the PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Putting it all Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Other forum [Profile] [PM]
Display posts from previous:    
Reply to topic

The time now is: Today 23:12

All times are GMT + 3 Hours



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum