Python

From Got Opinion Wiki
Jump to navigation Jump to search

My Python Notes

Python programming notes

Python programming

My notes using Python libraries

My Python Network Programming Notes

My Anaconda notes

Python virtual environments

Python venv tutorial

Setup Python virtual environment on Windows 10 using cmder in directory pydub

C:\Users\anon\Documents\python-venv           
λ python -m venv pydub                        
                                              
C:\Users\anon\Documents\python-venv           
λ ls -l                                       
total 0                                       
drwxr-xr-x 1 anon 197121 0 Nov 26 15:37 pydub/

Activate virtual environment

C:\Users\anon\Documents\python-venv
λ .\pydub\Scripts\activate.bat

C:\Users\anon\Documents\python-venv
(pydub) λ

Deactivate virtual environment

C:\Users\anon\Documents\python-venv
(pydub) λ deactivate
C:\Users\anon\Documents\python-venv
λ

To delete virtual environment just delete the directory used in python -m venv command (pydub in my example)

Python resources

Online

Python 3 Module of the Week by Doug Hellmann (PyMOTW-3)

PyMOTW-3 Concurrency with Processes, Threads, and Coroutines

Using % and .format() for great good!

Threading basics

Python Async Features

Learn Python by building 5 games

Books

Dive Into Python

Text Processing in Python

Python Frameworks

My Django notes

Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.

Set up Django in virtual environment on Dreamhost

Django book

BeeWare Write once. Deploy everywhere. Write your apps in Python and release them on iOS, Android, Windows, MacOS, Linux, Web, and tvOS using rich, native user interfaces. Multiple apps, one codebase, with a fully native user experience on every platform.

Libraries

NumPy is the fundamental package for scientific computing with Python. It contains among other things:

  • a powerful N-dimensional array object
  • sophisticated (broadcasting) functions
  • tools for integrating C/C++ and Fortran code
  • useful linear algebra, Fourier transform, and random number capabilities

Besides its obvious scientific uses, NumPy can also be used as an efficient multi-dimensional container of generic data. Arbitrary data-types can be defined. This allows NumPy to seamlessly and speedily integrate with a wide variety of databases.

Twisted is an event-driven networking engine written in Python and licensed under the open source ​MIT license. Twisted runs on Python 2 and an ever growing subset also works with Python 3.

Data Visualization Libraries

Bokeh is a Python interactive visualization library that targets modern web browsers for presentation. Its goal is to provide elegant, concise construction of novel graphics in the style of D3.js, but also deliver this capability with high-performance interactivity over very large or streaming datasets. Bokeh can help anyone who would like to quickly and easily create interactive plots, dashboards, and data applications.

matplotlib is a python 2D plotting library which produces publication quality figures in a variety of hardcopy formats and interactive environments across platforms. matplotlib can be used in python scripts, the python and ipython shell, web application servers, and six graphical user interface toolkits.

My pathlib notes

Easy way to deal with Windows file paths

My Python audio notes

Read and write wav files using Python wave module

pydub notes

Install pydub

C:\Users\anon\Documents\python-venv
(pydub) λ pip install pydub

Install simpleaudio

C:\Users\anon\PycharmProjects\pydub
(pydub) λ pip install --upgrade pip setuptools

C:\Users\anon\PycharmProjects\pydub
(pydub) λ pip install simpleaudio

Sample Python script for splitting wav files on silence

import os
import argparse
import re
from pydub import AudioSegment
from pydub.silence import split_on_silence

parser = argparse.ArgumentParser(description='Split .wav files at one second or more of silence. A user specified '
                                             'directory will be searched and files with .wav extension will be '
                                             'processed. Split .wav files are stored in "chunks" directory relative to '
                                             'and with similar name as reference .wav file. Split files have "_NN" '
                                             'inserted into file name before .wav extension where NN is 00 to 99 '
                                             'incremented from 00. Supports up to 100 chunks per .wav file by only '
                                             'processing the first 100 chunks.')
parser.add_argument('dir', help='the path to directory where .wav files are located')
args = parser.parse_args()
folder_name = args.dir

regex_pattern_wav_file_ext = re.compile(r"""\.wav$""")  # Regex that can identify files ending with .wav.

chunk_path = r'{}\{}'.format(folder_name, 'chunks')
if not os.path.exists(chunk_path) and not os.path.isdir(chunk_path):
    os.mkdir(chunk_path)

for filename in os.listdir(folder_name):
    if regex_pattern_wav_file_ext.search(r'{}\{}'.format(folder_name, filename)):
        wav_file = AudioSegment.from_wav(r'{}\{}'.format(folder_name, filename))
        chunks = split_on_silence(wav_file, min_silence_len=1000, silence_thresh=-60, keep_silence=500)
        if chunks:
            for i, chunk in enumerate(chunks):
                if i > 99:
                    break
                chunk.export(r"{}\chunks\{}_{:02d}.wav".format(folder_name, filename[:-4], i), format="wav")
print('Script completed.')

Data generation

ForgeryPy3 is a fake data generator fully compatible with Python 2 and 3.

Python on Linux

Linux Mint 14 Nadia with Cinnamon

The basic install of Mint 14 with Cinnamon comes with Python 3.2.3 and 2.7.3.

Invoking Python 3.2 Interpreter

$ python3.2
Python 3.2.3 (default, Oct 19 2012, 19:53:16) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

Python stories

How others are using Python

Python at Netflix

Notes about Python 2

Avoid Python 2.x and use Python 3.x versions.

My computing notes