File-writing not working in Windows?

tdahsu at gmail.com tdahsu at gmail.com
Fri Jun 6 11:18:17 EDT 2008


All,

I have the following code:
           for fileTarget in dircache.listdir("directory"):
                (dirName, fileName) = os.path.split(fileTarget)
                f = open(fileTarget).readlines()
                copying = False
                for i in range(len(f)):
                    for x in range (0,24,1):
                        if (re.search(self.Info[x][3], f[i])):
#If we have a match for our start of section...
                            if (self.Info[x][2] == True):
#And it's a section we care about...
                                copying =
True                              #Let's start copying the lines out
to the temporary file...
                                if (os.name == "posix"):
                                    if (self.checkbox25.GetValue() ==
False):
                                        tempfileName = "tempdir/" +
self.Info[x][0] + "_tmp_" + fileName + ".txt"
                                    else:
                                        tempfileName =
self.textctrl07.GetValue() + "/" + self.Info[x][0] + "_xyz.txt"
                                else:
                                    if (self.checkbox25.GetValue() ==
False):
                                        tempfileName = "tempdir\\" +
self.Info[x][0] + "_tmp_" + fileName + ".txt"
                                    else:
                                        tempfileName =
self.textctrl07.GetValue() + "\\" + self.Info[x][0] + "_xyz.txt"
                            else:
                                copying = False
                        if (re.search(self.Info[x][4], f[i])):
#Now we've matched the end of our section...
                            copying =
False                                 #So let's stop copying out to
the temporary file...
                    if (copying == True):
                        g = open(tempfileName,
'a')                     #Open that file in append mode...
 
g.write(f[i])                                       #Write the line...
                        g.close()

This code works PERFECTLY in Linux.  Where I have a match in the file
I'm processing, it gets cut out from the start of the match until the
end of the match, and written to the temporary file in tempdir.

It does not work in Windows.  It does not create or write to the
temporary file AT ALL.  It creates the tempdir directory with no
problem.

Here's the kicker: it works perfectly in Windows if Windows is running
in VMware on a Linux host!  (I assume that that's because VMware is
passing some call to the host.)

Can anyone tell me what it is that I'm missing which would prevent the
file from being created on Windows natively?

I'm sorry I can't provide any more of the code, and I know that that
will hamper your efforts in helping me, so I apologise up front.

Assumptions:
You can assume self.checkbox25.GetValue() is always false for now, and
self.Info[x][0] contains a two character string like "00" or "09" or
"14".  There is always a match in the fileTarget, so self.Info[x][2]
will always be true at some point, as will self.Info[x][4].  I am
cutting an HTML file at predetermined comment sections, and I have
control over the HTML files that are being cut.  (So I can force the
file to match what I need it to match if necessary.)

I hope however that it's something obvious that a Python guru here
will be able to spot and that this n00b is missing!

Thanks!



More information about the Python-list mailing list