====== Python basic examples ======
===== Python processing file and directory =====
==== os package ====
* Executing a shell command
os.system()
* Get the users environment
os.environ()
* Returns the current working directory
os.getcwd()
* Return a list of the entries in the directory given by path
os.listdir(path)
* Create a directory named path with numeric mode mode
os.mkdir(path)
* Recursive directory creation function
os.makedirs(path)
* Remove (delete) the file path
os.remove(path)
* Remove directories recursively
os.removedirs(path)
* Rename the file or directory src to dst
os.rename(src, dst)
* Remove (delete) the directory path
os.rmdir(path)
==== os.path basic functions ====
* split:
import os
from urlparse import urlparse
filename = "E:\\do-choi\\do-choi-giay\\the-hinh-chu-so-vua-hoc-vua-choi.html"
print "full filename", filename
print "using", os.name, "..."
print "split", "=>", os.path.split(filename)
print "splitdrive", "=>", os.path.splitdrive(filename)
print "splitext", "=>",os.path.splitext(filename)
print "splitunc", "=>",os.path.splitunc(filename)
output:
full filename E:\do-choi\do-choi-giay\the-hinh-chu-so-vua-hoc-vua-choi.html
using nt ...
split => ('E:\\do-choi\\do-choi-giay', 'the-hinh-chu-so-vua-hoc-vua-choi.html')
splitdrive => ('E:', '\\do-choi\\do-choi-giay\\the-hinh-chu-so-vua-hoc-vua-choi.html')
splitext => ('E:\\do-choi\\do-choi-giay\\the-hinh-chu-so-vua-hoc-vua-choi', '.html')
splitunc => ('', 'E:\\do-choi\\do-choi-giay\\the-hinh-chu-so-vua-hoc-vua-choi.html')
* using os.path to check what a filename represents
import os
FILES = (
os.curdir,
"/",
"file",
"/file",
"samples",
"samples/sample.jpg",
"directory/file",
"../directory/file",
"/directory/file"
)
for file in FILES:
print file, "=>",
if os.path.exists(file):
print "EXISTS",
if os.path.isabs(file):
print "ISABS",
if os.path.isdir(file):
print "ISDIR",
if os.path.isfile(file):
print "ISFILE",
if os.path.islink(file):
print "ISLINK",
if os.path.ismount(file):
print "ISMOUNT",
print
output:
. => EXISTS ISDIR
/ => EXISTS ISABS ISDIR ISMOUNT
file =>
/file => ISABS
samples => EXISTS ISDIR
samples/sample.jpg => EXISTS ISFILE
directory/file =>
../directory/file =>
/directory/file => ISABS
==== os.path custom examples ====
* Using os.path to handle filename
import os
import re
filename = "my/little/pony.txt"
print "using", os.name, "..."
print "split", "=>", os.path.split(filename)
print "splitext", "=>", os.path.splitext(filename)
print "dirname", "=>", os.path.dirname(filename)
print "basename", "=>", os.path.basename(filename)
print "join", "=>", os.path.join(os.path.dirname(filename),
os.path.basename(filename))
print "realpath", os.path.realpath(filename)
print "abspath", os.path.abspath(filename)
print "rename filename to ", re.sub(r'\.txt', '', filename) + '.html'
=> output
using nt ...
split => ('my/little', 'pony.txt')
splitext => ('my/little/pony', '.txt')
dirname => my/little
basename => pony.txt
join => my/little\pony.txt
realpath E:\backup\GoogleDrive\projects\python\my\little\pony.txt
abspath E:\backup\GoogleDrive\projects\python\my\little\pony.txt
rename filename to my/little/pony.html
* get normal path
import os
filename = "E:\\do-choi\\do-choi-giay\\the-hinh-chu-so-vua-hoc-vua-choi.html"
print "full filename", filename
print "basename", os.path.basename(filename)
print "dirname", os.path.dirname(filename)
print "splitdrive", "=>", os.path.splitdrive(filename)
fullpathname = os.path.dirname(filename)
pathname = os.path.splitdrive(fullpathname)[1]
print "pathname = ", pathname
normalpath = pathname[1:]
print "normalpath = ", normalpath
output:
full filename E:\do-choi\do-choi-giay\the-hinh-chu-so-vua-hoc-vua-choi.html
basename the-hinh-chu-so-vua-hoc-vua-choi.html
dirname E:\do-choi\do-choi-giay
splitdrive => ('E:', '\\do-choi\\do-choi-giay\\the-hinh-chu-so-vua-hoc-vua-choi.html')
pathname = \do-choi\do-choi-giay
normalpath = do-choi\do-choi-giay
* urlparse
import os
from urlparse import urlparse
url = "http://shop.babies.vn/do-choi/do-choi-giay/the-hinh-chu-so-vua-hoc-vua-choi.html"
o = urlparse(url)
print o
filename = o.path
print filename
print "split", "=>", os.path.split(filename)
print "splitext", "=>", os.path.splitext(filename)
print "dirname", "=>", os.path.dirname(filename)
print "basename", "=>", os.path.basename(filename)
print "join", "=>", os.path.join(os.path.dirname(filename),
os.path.basename(filename))
print "realpath", os.path.realpath(filename)
print "abspath", os.path.abspath(filename)
output:
ParseResult(scheme='http', netloc='shop.babies.vn', path='/do-choi/do-choi-giay/the-hinh-chu-so-vua-hoc-vua-choi.html', params='', query='', fragment='')
/do-choi/do-choi-giay/the-hinh-chu-so-vua-hoc-vua-choi.html
split => ('/do-choi/do-choi-giay', 'the-hinh-chu-so-vua-hoc-vua-choi.html')
splitext => ('/do-choi/do-choi-giay/the-hinh-chu-so-vua-hoc-vua-choi', '.html')
dirname => /do-choi/do-choi-giay
basename => the-hinh-chu-so-vua-hoc-vua-choi.html
join => /do-choi/do-choi-giay\the-hinh-chu-so-vua-hoc-vua-choi.html
realpath E:\do-choi\do-choi-giay\the-hinh-chu-so-vua-hoc-vua-choi.html
abspath E:\do-choi\do-choi-giay\the-hinh-chu-so-vua-hoc-vua-choi.html
==== Get all files and directories in current directory ====
* using os.path.walk list all file in current directory and all subdirectories
import os
def gotodir(arg, directory, files):
for file in files:
print file
os.path.walk(".", gotodir, "")
Output
.project
.pydevproject
conent.tpl
index.html
parser.py
test.py
* using os.path.walk list all full filename in current directory and all subdirectories
import os
def gotodir(arg, directory, files):
for file in files:
fullfilename = os.path.join(directory,file)
print fullfilename
os.path.walk(".", gotodir, "")
* Find all files with extension ".py":
import os
def gotodir(arg, directory, files):
for file in files:
extName = os.path.splitext(file)[1];
if extName == '.py':
fullfilename = os.path.join(directory,file)
print fullfilename
os.path.walk(".", gotodir, "")
==== Get Path of execute file ====
import os
fullpathexecute = sys.argv[0]
pathofexecute = os.path.split(fullpathexecute)[0]
print pathofexecute
==== Read and Update File ====
with open(filename, "rb") as f:
content = f.read()
if content != "":
#content = content.replace(oldstring, newstring)
with open(filename, "wb") as f:
f.write(content)
===== Python Command Line Arguments =====
refer: https://www.tutorialspoint.com/python/python_command_line_arguments.htm
Consider we want to pass two file names through command line and we also want to give an option to check the usage of the script. Usage of the script is as follows −
usage: test.py -i -o
Here is the following script to test.py −
#!/usr/bin/python
import sys, getopt
def main(argv):
inputfile = ''
outputfile = ''
try:
opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
except getopt.GetoptError:
print 'test.py -i -o '
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print 'test.py -i -o '
sys.exit()
elif opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
print 'Input file is "', inputfile
print 'Output file is "', outputfile
if __name__ == "__main__":
main(sys.argv[1:])
Now, run above script as follows −
* Option1:
$ test.py -h
output:
test.py -i -o
* Option2:
$ test.py -i inputfile
output:
Input file is " inputfile
Output file is "