Table of Contents
Python
Python's style guide can be found here (PEP 8).
Documentation: I find the W3School site to be more helpful initially. Then, if I need more detail and definition, I got to the official Python doc site (which, honestly, I find difficult to navigate).
W3 Schools:
Python Site: python.org
-
- Built-In Types (& their methods, etc.)
If you do not want to preface all your script names with python3
to run them, your Python scripts should being with (note: your filesystem address may differ):
#!/usr/bin/python3
Virtual Environment
Create a new virtual environment for every Python project you work on ( read).
- This way the dependencies of each project are isolated from the system and from the other projects (avoiding conflicts).
- There are no limits to the number of environments you can have since they are just directories containing a few scripts.
Installation: To use virtual environments, install the python3-venv
package.
Create a Virtual Environment: Make a new directory, cd into it, create the environment, and activate it.
$ mkdir dir_name_whatever $ cd dir_name_whatever $ python3 -m venv name_of_venv # -m : tells python to run the module as a script # venv : the module we want to run as a script # name : name it whatever you want $ source name_of_venv/bin/activate # runs the script to activate your virt env # your prompt should change: prefixed by name of venv $ deactivate # exit the venv
Files: Reading From
Use the following syntax when opening and reading a file into a Python program:
with open('filename.txt') as file_object: contents = file_object.read() print( contents.rstrip() )
- The
open()
function returns a file object (an object representing the file). - The keyword
with
closes the file once access to it is no longer needed. This structure will avoid problems…- You could
open()
andclose()
your file, but if if a bug in your program prevents theclose()
statement, the file many never close (possible data loss or corruption). - The structure above allows Python to automagically close the file when the time is right.
- The
read()
method reads then entire file contents and stores it as a string incontents
.- Note:
read()
will insert an empty string at EOF which will result in an extra blank line. To remove it, justrstrip()
.
File Paths: To reference files in other subdirs, you have two options…
- Relative File Path: the path to the file relative to the current working directory.
- Absolute File Path: the path to the file relative to the current file system.
# A relative file path starts in the directory in which you started Python with open('files/text files/filename.txt') as file_object: # An absolute file path (b/c they are long, store them in a variable first) file_path = '/home/greg/other_files/text_files/filename.txt' with open(file_path) as file_object:
Web Server
Here's an easy quick Python Web Server in your pwd:
python -m SimpleHTTPServer 8080
Pick a port. 8080 is random. Tab completion works for the module name (-m is for “module”). This allows you to transfer files anywhere on the network.
- Put your files in the subdir
- Spin up the Python web server
- Access that server by IP address: port number (192.168.0.101:8080) from any machine
- Download files from the server machine to the client machine
- Documentation: https://docs.python.org/2/library/simplehttpserver.html
Web Server (Py3)
If you use Python 3, you should instead write
python3 -m http.server 8080
Python3 http.server documentation: https://docs.python.org/release/3.0.1/library/http.server.html
FTP One-Liner
Note: You may have to pip install pyftpdlib
python -m pyftpdlib
- Ordered List ItemConnect to that machine's IP address with the port number shown.
- Download anything. Navigate around.
Main Block
Runs main()
if file was not imported:
if __name__ == '__main__': main()
By including this if
statement around your main program (i.e., not your imports, functions, classes, etc.), you can utilize your code in two ways:
- When you run your program from the command line like normal, the program's name becomes
main
and therefore the main block is executed. - You can also import this program and its code into another program (as if it were a module or library) and have no side effects.
- Since
main
will refer to the other program into which you imported your code. Your imported program will act as a Python module and keep is own name (without the extension). - This means everything else in your imported program (functions, classes, etc.) is available to you, but the main block will not be executed. Pretty slick