#acl AdminGroup:read,write,delete,revert EditorGroup:read All:read #format wiki #language en #pragma section-numbers off <> = Interaction with the operating system = The modules sys and os provide the basic interface to the operating system. The module os creates a portable abstraction layer which is used by high-level modules like glob, socket, thred, time, fcntl. == Module sys == The module [[http://docs.python.org/lib/module-sys.html|sys]] provides access to system-specific parameters by the interpreter. === Example argv === {{{#!python #system1.py import sys print sys.argv }}} {{{ run system1.py parameter1 parameter2 ['system1.py', 'parameter1', 'parameter2'] }}} The script prints the command line arguments that are passed to the script. argv[0] is the script name A more sophisticated way of evaluating command line arguments is provided by the module [[http://docs.python.org/lib/module-optparse.html|optparse]] == Module os == The module [[http://docs.python.org/lib/module-os.html|os]] is a portable operating system interface. Some examples: * {{{os.system()}}} Executes the command (a string) in a subshell * {{{os.mkdir()}}} Creates a directory * {{{os.remove()}}} Deletes a file * {{{os.path.isdir()}}} Test if directory * {{{os.path.isfile()}}} Test if file * {{{os.path.exists()}}} Test if file or directory exists * {{{os.path.getsize()}}} Size of a file * {{{os.path.basename()}}} Base name of pathname * {{{os.walk()}}} Directory tree generator == Module fnmatch == The module [[http://docs.python.org/library/fnmatch.html|fnmatch]] provides support for Unix shell-style wildcards == Module glob == The module [[http://docs.python.org/lib/module-glob.html|glob]] finds all the pathnames matching a specified pattern according to the rules used by the Unix shell. The following example looks for all pdf files in the current working directory and converts them into postscript files. {{{#!python #!/usr/bin/env python import os,glob filelist=glob.glob('*.pdf') for f in filelist: psfilename=f.split('.')[0]+'.ps' cmd='pdftops '+f+' '+psfilename print cmd os.system(cmd) }}} == Module shutil — High-level file operations == The [[http://docs.python.org/library/shutil.html|shutil]] module offers a number of high-level operations on files and collections of files. In particular, functions are provided which support file copying and removal. == Unix Specific Services == Features that are unique to the Unix operating system are for example shell pipelines (data streams) that ''pipe'' the output of one program to another. The pipeline symbol is {{{|}}}. For example, the command {{{ls -s | sort -rg}}} ''pipes'' the output of {{{ls -s}}} to the {{{sort}}} program. The result is a list of filenames sorted by its size A python pipeline to a Unix programm can be established using the module [[http://docs.python.org/lib/module-pipes.html|pipes]] = System programming: walk example = The following script walks through a directory tree and looks for all files with the matching extension: {{{#!python #!/usr/bin/env python import os,fnmatch,sys # Usage: # ./walkdir.py directory extension dir,ext=sys.argv[1],sys.argv[2] for root, dirs, files in os.walk(dir): f=fnmatch.filter(files,'*.'+ext) if type(f)==type([]): for fi in f: print root+fi }}} Save the file as {{{walkdir.py}}} and use {{{chmod +x walkdir.py}}} to set the execution permissions of the file. The first magic line starts the python interpreter. The script can be exectuted on the bash shell using: {{{ ./walkdir.py $HOME/subdir ps }}} Without the magic line, the script has to be run like this: {{{ python walkdir.py $HOME/sync/ ps }}} Or within {{{ipython}}} using {{{run}}}