File-writing not working in Windows?

Lie Lie.1296 at gmail.com
Sun Jun 8 04:11:23 EDT 2008


On Jun 6, 10:18 pm, tda... at gmail.com wrote:
> 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!

Well, not to be rude, but that's quite a spaghetti code, some of the
guilt, however, was for the mailing program that cuts 80+ lines.
Others was the use of things like "for i in range(len(f)):" or "if (a
== True)".

Try checking whether you're trying to write to a path like r"\dir
\file.txt" or r"dir\file.txt" instead of r"C:\dir\file.txt" in
Windows.

If that doesn't solve the problem, tell us a few things:
- Any error messages? Or simply nothing is written out?
- Has a blank file get created?



More information about the Python-list mailing list