Re: empty csv file attachments
Bobby Roberts wrote: I'm new to python but a veteran at programming. Hm, your code doesn't show that. The time to read the tutorial would be time well spend. After that, a quick look at what the standard library has to offer wouldn't hurt. E. g. reading/writing CSV files is a solved problem in python ;) This one has me stumped. I have a simple contact form which the user fills out. The email is sent to the site user as well and it is delivered with the content in the body of the email as well in nice order. I have modified my code to also send the content as a csv attachment. On the server, the file is perfectly generated with content. The attachment, however, is completely blank. Any ideas what that could be? My code snippet is shown below: if int(attachmenttype)==2 or int(attachmenttype)==3: for field in ctx.request.field_names(): if field=='last_name': myfilename=ctx.request.field_value(field)+'.txt' if myfilename=='': myfilename='tempfile.txt' mypath= mynewfilepath + '/' + myfilename f=open(mypath, 'w') mynewstring='' counter=0 for field in ctx.request.field_names(): if field != 'inquiry_required': mynewstring=mynewstring + field +',' if mynewstring[-1]==',': mynewstring=mynewstring[0:len(mynewstring)-1] f.write(mynewstring) f.write ('\n') mynewstring='' counter=1 for field in ctx.request.field_names(): fielddata=ctx.request.field_value(field) if counter==1: Hm, above you skip the field inquiry_required, here you skip the second field. dummydata=0 else: mynewstring=mynewstring + '' + fielddata.replace('','') + ',' counter = counter + 1 if mynewstring[-1]==',': mynewstring=mynewstring[0:len(mynewstring)-1] f.write(mynewstring) f.write('\n') f.close Your actual problem might be that f.close doesn't close (and therefore flush) the file, you need to call it with f.close(). attachments.append('/'.join((ctx.request.library, myfilename))) Hm, is ctx.request.library the same as mynewfilepath? With some guessing your code becomes (untested) import csv import os if int(attachmenttype) in (2, 3): filename = 'tempfile.txt' if last_name in ctx.request.field_names(): last_name = ctx.request.field_value(last_name) if last_name: filename = last_name + .txt path = os.path.join(ctx.request.library, filename) f = open(path, 'wb') writer = csv.writer(f) fieldnames = [field for field in ctx.request.field_names() if field != inquiry_required] writer.writerow(fieldnames) writer.writerow(ctx.request.field_value(field) for field in fieldnames) f.close() attachments.append(path) The code to build the filename is still clumsy, but to do better I'd have to know the library you are using. Personally I'd always use tempfile.txt and be done. This would also avoid fun with last names like ../../just_testing_file_permissions. Peter -- http://mail.python.org/mailman/listinfo/python-list
empty csv file attachments
hi group. I'm new to python but a veteran at programming. This one has me stumped. I have a simple contact form which the user fills out. The email is sent to the site user as well and it is delivered with the content in the body of the email as well in nice order. I have modified my code to also send the content as a csv attachment. On the server, the file is perfectly generated with content. The attachment, however, is completely blank. Any ideas what that could be? My code snippet is shown below: if int(attachmenttype)==2 or int(attachmenttype)==3: for field in ctx.request.field_names(): if field=='last_name': myfilename=ctx.request.field_value(field)+'.txt' if myfilename=='': myfilename='tempfile.txt' mypath= mynewfilepath + '/' + myfilename f=open(mypath, 'w') mynewstring='' counter=0 for field in ctx.request.field_names(): if field != 'inquiry_required': mynewstring=mynewstring + field +',' if mynewstring[-1]==',': mynewstring=mynewstring[0:len(mynewstring)-1] f.write(mynewstring) f.write ('\n') mynewstring='' counter=1 for field in ctx.request.field_names(): fielddata=ctx.request.field_value(field) if counter==1: dummydata=0 else: mynewstring=mynewstring + '' + fielddata.replace('','') + ',' counter = counter + 1 if mynewstring[-1]==',': mynewstring=mynewstring[0:len(mynewstring)-1] f.write(mynewstring) f.write('\n') f.close attachments.append('/'.join((ctx.request.library, myfilename))) [snip... sends email just after this] any ideas? -- http://mail.python.org/mailman/listinfo/python-list
empty csv file attachments
hi group. I'm new to python but a veteran at programming. This one has me stumped. I have a simple contact form which the user fills out. The email is sent to the site user as well and it is delivered with the content in the body of the email as well in nice order. I have modified my code to also send the content as a csv attachment. On the server, the file is perfectly generated with content. The attachment, however, is completely blank. Any ideas what that could be? My code snippet is shown below: if int(attachmenttype)==2 or int(attachmenttype)==3: for field in ctx.request.field_names(): if field=='last_name': myfilename=ctx.request.field_value(field)+'.txt' if myfilename=='': myfilename='tempfile.txt' mypath= mynewfilepath + '/' + myfilename f=open(mypath, 'w') mynewstring='' counter=0 for field in ctx.request.field_names(): if field != 'inquiry_required': mynewstring=mynewstring + field +',' if mynewstring[-1]==',': mynewstring=mynewstring[0:len(mynewstring)-1] f.write(mynewstring) f.write ('\n') mynewstring='' counter=1 for field in ctx.request.field_names(): fielddata=ctx.request.field_value(field) if counter==1: dummydata=0 else: mynewstring=mynewstring + '' + fielddata.replace('','') + ',' counter = counter + 1 if mynewstring[-1]==',': mynewstring=mynewstring[0:len(mynewstring)-1] f.write(mynewstring) f.write('\n') f.close attachments.append('/'.join((ctx.request.library, myfilename))) [snip... sends email just after this] any ideas? -- http://mail.python.org/mailman/listinfo/python-list
Re: empty csv file attachments
On Sep 24, 1:17 pm, Bobby Roberts [EMAIL PROTECTED] wrote: hi group. I'm new to python but a veteran at programming. This one has me stumped. I have a simple contact form which the user fills out. The email is sent to the site user as well and it is delivered with the content in the body of the email as well in nice order. I have modified my code to also send the content as a csv attachment. On the server, the file is perfectly generated with content. The attachment, however, is completely blank. Any ideas what that could be? My code snippet is shown below: if int(attachmenttype)==2 or int(attachmenttype)==3: for field in ctx.request.field_names(): if field=='last_name': myfilename=ctx.request.field_value(field)+'.txt' if myfilename=='': myfilename='tempfile.txt' mypath= mynewfilepath + '/' + myfilename f=open(mypath, 'w') mynewstring='' counter=0 for field in ctx.request.field_names(): if field != 'inquiry_required': mynewstring=mynewstring + field +',' if mynewstring[-1]==',': mynewstring=mynewstring[0:len(mynewstring)-1] f.write(mynewstring) f.write ('\n') mynewstring='' counter=1 for field in ctx.request.field_names(): fielddata=ctx.request.field_value(field) if counter==1: dummydata=0 else: mynewstring=mynewstring + '' + fielddata.replace('','') + ',' counter = counter + 1 if mynewstring[-1]==',': mynewstring=mynewstring[0:len(mynewstring)-1] f.write(mynewstring) f.write('\n') f.close attachments.append('/'.join((ctx.request.library, myfilename))) [snip... sends email just after this] any ideas? I would sprinkle some print statements in there to narrow it down... ~Sean -- http://mail.python.org/mailman/listinfo/python-list