Kevin D. Clark wrote:
Erik Price <[EMAIL PROTECTED]> writes:


PS: FWIW, Python is a friendlier and IMO superior language for writing
scripts where legibility is important, but you can't write a oneliner
like the OP's Perl script using Python.  I think a lot of Perl users
like the way that it is quick to write.

Well, again, everybody is entitled to their opinions, but I find that
I am quite successful at writing legible Perl scripts.  I've been
playing around with Python for a while now, but I still prefer Perl
over Python.
Strange, you sound like you are at odds with me but I never questioned anyone's ability to write legible Perl scripts. In fact, I always jump ahead to Randal's Perl column in Linux Magazine, because his code is often the simplest and easiest to read of all the source code published in that magazine.

I did say, however, that Python is superior in my opinion for writing scripts where legibility is important. No offense, but I wasn't responding to you at all, but to Derek, who was saying something about Perl not being easy to read by programmers who don't know the idiosyncracies of Perl, or something. In that case, yes, Python's a lot more straightforward -- as some people like to say, it's "executable pseudocode".

BTW, where's your Python solution to this problem?  Please make sure
that it is functionally identical to the solution that I posted.
I didn't read the details of File::Find (which is too bad since I've heard of it before and it looks like a great module), so I'm not sure if this does everything, but I managed to hash this script out. I think it does the same thing. Let me know if it doesn't. Also note that Python offers the list comprehensions and map and other elegant functional programming features that Perl has, but I didn't use them as some of the discussion on this list suggested that they aren't very readable. (There are definitely less verbose ways to write unspacify.py. Criticism welcome.)



Erik




#!/usr/bin/python

import sys
import os
import os.path

def unspacify(somestring):
return somestring.replace(' ', '_')

def unspacifyFile(filename):
if os.path.isfile(filename):
os.rename(filename, unspacify(filename))
# this next condition will never happen if this
# function is called from unspacifyDirectory(),
# but is included in case this function is invoked
# directly (from another script)
elif os.path.isdir(filename):
os.rename(filename, unspacify(filename))
else:
raise IOError

def unspacifyDirectory(directoryname, recurse=False):
if os.path.isdir(directoryname):
thisdir = os.getcwd()
os.chdir(directoryname)
for file in os.listdir("."):
if os.path.isdir(file) and recurse == True:
unspacifyDirectory(file, False)
try:
unspacifyFile(file)
except IOError, ioe:
print "Unreadable: " + file
continue
os.chdir(thisdir)


def usage():
print "usage: unspacify.py [-r] targetfile"

if __name__ == '__main__':
if sys.argv[1] == '-r' and os.path.isdir(sys.argv[2]):
unspacifyDirectory(sys.argv[2], True)
elif os.path.isdir(sys.argv[1]):
unspacifyDirectory(sys.argv[1])
elif os.path.isfile(sys.argv[1]):
try:
unspacifyFile(sys.argv[1])
except IOError, ioe:
print "File Unreadable: " + sys.argv[1]
sys.exit(1)
else:
usage()
sys.exit(1)

sys.exit(0)

_______________________________________________
gnhlug-discuss mailing list
[EMAIL PROTECTED]
http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss

Reply via email to