This chapter is taken from book A Primer on Scientific Programming with Python by H. P. Langtangen, 4th edition, Springer, 2014.
Python applies the term directory instead of folder.
The equivalent of the Unix mkdir mydir is
import os
os.mkdir('mydir')
Ordinary
files are created by the open and close functions in Python.
Suppose you want to make a subfolder under your home folder:
$HOME/python/project1/temp
but the intermediate folders python and project1 do not exist.
This requires each new folder to be made separately by os.mkdir,
or you can make all folders at once with os.makedirs:
foldername = os.path.join(os.environ['HOME'], 'python',
                          'project1', 'temp')
os.makedirs(foldername)
With os.environ[var] we can get the value of
any environment variable var as
a string. The os.path.join function joins folder names and a filename
in a platform-independent way.
The cd command reads os.chdir and cwd is os.getcwd:
origfolder = os.getcwd()  # get name of current folder
os.chdir(foldername)      # move ("change directory")
...
os.chdir(origfolder)      # move back
The cross-platform mv command is
os.rename(oldname, newname)
Unix wildcard notation can be used to list files. The equivalent of
ls *.py and ls plot*[1-4]*.dat reads
import glob
filelist1 = glob.glob('*.py')
filelist2 = glob.glob('plot*[1-4]*.dat')
The counterparts to ls -a mydir and just ls -a are
filelist1 = os.listdir('mydir')
filelist1 = os.listdir(os.curdir)  # current folder (directory)
filelist1.sort()                   # sort alphabetically
The widely used constructions in Unix scripts for
testing if a file or folder
exist are if [ -f $filename ]; then and
if [ -d $dirname ]; then. These
have very readable counterparts in Python:
if os.path.isfile(filename):
    inputfile = open(filename, 'r')
    ...
if os.path.isdir(dirnamename):
    filelist = os.listdir(dirname)
    ...
Removing a single file is done with os.rename, and a loop is
required for doing rm tmp_*.df:
import glob
filelist = glob.glob('tmp_*.pdf')
for filename in filelist:
    os.remove(filename)
The rm -rf mytree command removes an entire folder tree.
In Python, the cross-platform valid command becomes
import shutil
shutil.rmtree(foldername)
It goes without saying that this command must be used with great care!
The cp fromfile tofile construction applies shutil.copy in Python:
shutil.copy('fromfile', 'tofile')
The recursive copy command cp -r for folder trees
is in Python expressed by shell.copytree:
shutil.copytree(sourcefolder, destination)