On Oct 14, 2:13 am, Peng Yu <pengyu...@gmail.com> wrote: > Bash is easy to use on manipulating files and directories (like change > name or create links, etc) and on calling external programs. For > simple functions, bash along is enough. However, bash does not support > the complex functions. Python has a richer library that could provide > support for complex functions (such compute the relative path between > two paths). > > I'm wondering for a task that can not be done with bash along whether > it would be better to do in pure python or with a mix of both python > and bash. What I care is mostly coding speed and a little bit > maintainability (but not much). Can somebody provide some experience > on when to combine python and bash and when to use pure python?
bash can **not** manipulate files and directories beyond things like the '>' and '>>' I/O redirections, and some minor loading/saving of state data from/to files (command history, directory stack, etc). Most of what you refer to are **separate operating system specific programs** and have absolutely nothing to do with the shell. Very sophisticated scripts are possible using bash and ksh, there is even a form of ksh that has tk capabilities! (tksh). The Python and Bourne-derived languages are however fundamentally different creatures, and use very different data models. You should **not** write Python (or Perl) scripts as if they were shell scripts -- doing so is very bad practice. When you want a shell script, write a shell script. When you write a Python script, write a Python script. It really is that simple. As a rule of thumb, when you have need of data structures beyond what scalar strings and very simple word lists can provide -- you should use Python. bash and ksh provide support for arrays, and ksh even has dictionaries! (Hashes in Perl speak.) That makes programming in bash/ ksh more robust then pure sh, but also less portable. The best time to use bash is when you require bash specific features, other wise don't use bash. The same can be said for ksh. When the words array, dictionary, class, object, and/or using multiple source files comes to mind when implementing a program - you probably want to use Python, Perl, Ruby, or some other general programming language, not a shell scripting language like bash. You should be cautious to avoid mixing bash and Python code in one file. If maintainability is not a factor in what you are writing, then you should probably not be writing code in any language unless it is the language of Mathematics (and even then, maintainability is a wise consideration). -- TerryP. Just Another Programmer. -- http://mail.python.org/mailman/listinfo/python-list