Below is my cheat-sheet for Python. Please note, this assumes Python 3 as most Linux distributions have finally made the switch.
Table Of Contents
- File Handling
- API Requests
Write String To File
content = "hello world" text_file = open("output.json", "w") text_file.write(content) text_file.close()
Read File Into A Variable
fileHandler = open("/path/to/file.txt", "r") content = fileHandler.read()
Loop Over Files In Directory
import os for filename in os.listdir("/path/to/directory"): print(filename)
Add File To A Zip
If the zip file doesn't already exist, this will create one. If it does already exist, this will add the file to it.
import zipfile zipClient = zipfile.ZipFile("myZip.zip", "a") zipClient.write("myfile.txt") zipClient.close();
w) intead of the append flag (
a) when opening the zip file.
Send API Request And Get Response JSON String
import requests import json response = requests.get('https://api.somedomain.com') content = json.dumps(response.json())
json.dumps you will end up with a Python dictionary instead of a JSON string.
Importing / Exporting Examples
Fix "Bad JSON" Dump
The following snippet will fix situations where a python dictionary was dumped to a file instead of JSON.
import ast import json fileHandle = open("output.json", "r") pythonDictString = fileHandle.read() fileHandle.close() pythonDataObj = ast.literal_eval(pythonDictString) jsonString = json.dumps(pythonDataObj); fileHandle = open("output.json", "w"); fileHandle.write(jsonString) fileHandle.close()
The snippet below would result in an example file that would look like JSON but wasn't (and would need fixing):
import requests import json response = requests.get('https://api.somedomain.com') content = response.json() # content is dictionary, not JSON string! fileHandle = open("output.json", "w"); fileHandle.write(content) fileHandle.close()
Private Variables and Methods
Python does not have private member variables and methods. Instead, programmers rely on a
naming convention whereby such variables/methods are prefixed with
Developers know not using another class's methods/variables that start with this in the name.
class MyClass: _my_private_member_variable: str def myPublicAccessor(self): return self._my_private_member_variable
To document a function, there is the Sphinx markup which is supported by Pycharm. Below is an example:
def sayHello(name=None) """ Generate a hello message :param str name: optionally specify the name of the person to say hello to. :return str: The generated message. """
Get Script's Directory
This will return the full path to the directory that contains the script. This may or may not be where you called the script from.
import os print(os.path.dirname(os.path.realpath(__file__)))
Get Command Line Arguments
import sys scriptName = sys.argv firstArgument = sys.argv listOfJustTheArguments = sys.argv[1:]
Output To Stderr
print("Message to put out in stderr", file=sys.stderr)
Exit / Quit
There are many ways to quit out in Python, but the rule-of-thumb would e to just use the following:
sys.exit("My exit/error message")
exit()are synonyms and raise the SystemExit exception behind the scenes and only available if the site module is imported.
sys.exit()is considered good to be used in production code because the sys module is always available.
os._exit()function is special because it exits immediately without calling any cleanup functions. It doesnt flush buffers for example.
- If entering a message in any of them (except
os._exitwhich needs an exit integer), they will always exit in such a way that if using
set -ein a BASH script to stop on error, the BASH script would stop (e.g. you do not need to worry about using an exit code of 1)
- Any messages in such calls to to the stderr stream (except
os._exitwhich needs an exit integer)
- Using any of them without any parameters, will result in the script exiting as if it ran successfully, so be sure to put something in if something went wrong!
This way if called from BASH with
set -ethe BASH script can know to stop.
- Github - Asabeneh / 30-Days-Of-Python
- Stack Overflow - Single vs double quotes in JSON
- Stack Overflow - How can I find script's directory? [duplicate]
- TechRepublic - Writing and appending to zip archives in Python
- Stack Overflow - How to document a method with parameter(s)?
- Stack Overflow - How do I access command line arguments?
- Stack Overflow - Python exit commands - why so many and when should each be used?
- GeeksForGeeks.org - Python exit commands: quit(), exit(), sys.exit() and os._exit()
First published: 20th April 2021