[Tutor] identifying the calling module/function
Kent Johnson
kent37 at tds.net
Sat Mar 8 22:04:03 CET 2008
tetsuo2k6 at web.de wrote:
> in dgf.py: (hope the formatting gets good for you, t-bird breaks the
> lines badly on my machine...)
>
> def csvwriter(*column_definitions):
> """Edit Me!"""
> if sys.argv[0] == /usr/local/bin/xyz.py:
> output_csv_filename = "xyz.csv"
> else:
> output_csv_filename = raw_input("Name of the file to produce?
> (ATTENTION: WILL BE OVERWRITTEN!) ")
If you can change xyz.py you can avoid this by adding an optional
filename parameter to the function.
> first_row = ";".join(*column_definitions)
> try:
> file = open(output_csv_filename, "w")
> file.write(first_row)
> file.close()
> except:
> print("Couldn't open %s for writing." %
output_csv_filename)
It's not such a good idea to hide the exception like this; you might at
least want to print the actual exception. Or just let it propagate.
> sys.exit(1)
You can use the csv module to write the header row, too.
I would write this as
def csvwriter(*column_definitions, filename=None):
if filename is none:
filename = raw_input("Name of the file to produce?
(ATTENTION: WILL BE OVERWRITTEN!) ")
try:
out = csv.writer(open(filename, "ab"),
delimiter=";", quoting=csv.QUOTE_NONE)
out.writerow(column_definitions)
except Exception, e
print("Couldn't open %s for writing." %
output_csv_filename)
print e
return out
Kent
More information about the Tutor
mailing list