Tips
Find all installed modules
help("modules");
Virtual Environment
With virtualenv and virtualenvwrapper
# Installing virtualenv and virtualenvwrapper
sudo pip install virtualenv virtualenvwrapper
# Update the profile ~/.bashrc
# Add the following lines
# Python virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
# Reload the profile
source ~/.bashrc
# Creating python virtual environment
# The py3cv3 is a self-defined name
mkvirtualenv py3cv3 -p python3
# Enter the specified virtual environment
workon py3cv3
# Exit the the specified virtual environment
deactivate
# List all of the environments.
lsvirtualenv
# Remove an environment
rmvirtualenv py3cv3
Timestamp
timestamp = datetime.datetime.now()
print("It is {}".format(timestamp.strftime("%A %d %B %Y %I:%M:%S%p")))
Math
total += 1
If-then
# Boolean, none
if motion is not None:
if not flag:
# Number
if delay > 0:
if delay == 0:
if total > frameCount:
# String
if "blue" in style:
if authors.startswith('['):
authors = authors.lstrip('[').rstrip(']')
def doi_url(d): return f'http://{d}' if d.startswith('doi.org') else f'http://doi.org/{d}'
Command Arguments
# construct the argument parser and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--interval", required=False,
help="Seconds to Interval (Default:30)", default="30", type=int)
ap.add_argument("-o", "--output", required=False,
help="Path to Output Logs (Default:std-out)")
args = vars(ap.parse_args())
# Usage
intv = args["interval"]
logfile = args["output"]
JSON
JSON to dict
json.loads 用來轉換資料; json.load 用來讀檔。
import json
person = '{"name": "Bob", "languages": ["English", "French"]}'
person_dict = json.loads(person)
# Output: {'name': 'Bob', 'languages': ['English', 'French']}
print( person_dict)
# Output: ['English', 'French']
print(person_dict['languages'])
Dict to JSON
import json
person_dict = {'name': 'Bob',
'age': 12,
'children': None
}
person_json = json.dumps(person_dict)
# Output: {"name": "Bob", "age": 12, "children": null}
print(person_json)
Read JSON file
import json
with open('path_to_file/person.json', 'r') as f:
data = json.load(f)
# Output: {'name': 'Bob', 'languages': ['English', 'French']}
print(data)
Write JSON file
json.dump 用來寫檔案; json.dumps 用來轉換資料。
import json
person_dict = {"name": "Bob",
"languages": ["English", "French"],
"married": True,
"age": 32
}
with open('person.txt', 'w') as json_file:
json.dump(person_dict, json_file)
Print JSON
import json
person_string = '{"name": "Bob", "languages": "English", "numbers": [2, 1.6, null]}'
# Getting dictionary
person_dict = json.loads(person_string)
# Pretty Printing JSON string back
print(json.dumps(person_dict, indent = 4, sort_keys=True))
Access JSON
import json
json_data = '''
{
"students": [
{
"name": "David",
"age": 19,
"grades": {
"math": 90,
"english": 87
}
},
{
"name": "Harry",
"age": 21,
"grades": {
"math": 85,
"english": 95
}
}
]
}
'''
# Parse JSON Data
data = json.loads(json_data)
# To access a large dataset we can use `for loop`
for student in data["students"]:
name = student["name"]
math_mark = student["grades"]["math"]
english_mark = student["grades"]["english"]
average_mark = (math_mark + english_mark) / 2
print(f"{name}, Avarage Marks: {average_mark:.2f}")
# Output:
# David, Average Marks: 88.50
# Harry, Average Marks: 90.00
import json
original_data_file="students_data.json"
updated_data_file="students_data_updated.json"
# reading `JSON file`
with open(original_data_file,"r") as file:
students_result = json.load(file)
# Updating JSON Data
for student in students_result['students']:
print(student['name'])
if student['name'] == "Kabir":
student['name'] = "John"
grades = student['grades']
avarage_mark= sum(grades.values()) / len(grades)
student['avarage_mark'] = avarage_mark
# Saving updated data into a new file
with open(updated_data_file,"w") as file:
json.dump(students_result,file,indent=4)
Get JSON from URL
import requests, json
# Response will be saved here
weather_data="weather_data.json"
# Request to `openweathermap` API
api_key = "6423af6e554f98cf1e6b8c6a7700986b" #REPLACE_WITH_YOUR_API_KEY
location = "Dhaka"
url = f"https://api.openweathermap.org/data/2.5/weather?q={location}&appid={api_key}&units=metric"
# Response
response = requests.get(url)
# Get `Place` and `Temperature` from the Response
if response.status_code == 200:
json_data = response.json()
print(f"Place: {json_data['name']}, Temperature: {json_data['main']['temp']} celsius")
else:
print(f"Request failed with status code {response.status_code}")
# Save the Response to a file
with open(weather_data,"w") as file:
json.dump(json_data,file,indent=4)
# Output:
# Place: Dhaka, Temperature: 27.99 celsius
# Handling a JSONDecodeError in Python
from json import JSONDecodeError
import requests
resp = requests.get('https://reqres.in/api/users/page4')
try:
resp_dict = resp.json()
except JSONDecodeError:
print('Response could not be serialized')
Data Type
使用 json.loads 轉換資料型別時,要注意輸出的類型可能是 dict 或者 array,這要看原始JSON 的資料格式。
import json
country = '{"name": "United States", "population": 331002651}'
country_dict = json.loads(country)
print(type(country))
print(type(country_dict))
# Output:
# <class 'str'>
# <class 'dict'>