On Mon, 09 May 2005 10:54:22 -0400, Jeremy Jones <[EMAIL PROTECTED]> wrote:
>I've written a piece of code that iterates through a list of items and >determines the filename to write some piece of data to based on >something in the item itself. Here is a small example piece of code to >show the type of thing I'm doing:: > >################################# >file_dict = {} > >a_list = [("a", "a%s" % i) for i in range(2500)] >b_list = [("b", "b%s" % i) for i in range(2500)] >c_list = [("c", "c%s" % i) for i in range(2500)] >d_list = [("d", "d%s" % i) for i in range(2500)] > > >joined_list = a_list + b_list + c_list + d_list > >for key, value in joined_list: > outfile = file_dict.setdefault(key, open("%s.txt" % key, "w")) You are opening files multiply, since the open is a default value expression that is always evaluated. Try replacing the above line with the following two lines: try: outfile = file_dict[key] except KeyError: outfile = file_dict[key] = open("%s.txt" % key, 'w') > outfile.write("%s\n" % value) > >for f in file_dict.values(): > f.close() >################################# > >Problem is, when I run this on Windows, I get 14,520 null ("\x00") >characters at the front of the file and each file is 16,390 bytes long. >When I run this script on Linux, each file is 13,890 bytes and contains >no "\x00" characters. This piece of code:: > I don't want to think about the _exact_ explanation, but try the above (untested ;-) and see if the symptoms change ;-) Regards, Bengt Richter -- http://mail.python.org/mailman/listinfo/python-list