File-writing not working in Windows?

tdahsu at gmail.com tdahsu at gmail.com
Sun Jun 8 16:29:48 CEST 2008


On Jun 8, 4:11 am, Lie <Lie.1... at gmail.com> wrote:
> 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?- Hide quoted text -
>
> - Show quoted text -

Thanks to everyone for the help.  I really do appreciate your
suggestions and time; again I apologise for not being able to give you
all the code to diagnose.  I understand that it made this more
difficult and thank you for the input!

The error was not with the script.

The error was with the HTML that was being parsed!  It's the last
thing I considered to check, and where I should have started.

John, thank you for the link to the style guide.  I can see its use
and will make my code conform to the standards.

Thanks again to everyone!



More information about the Python-list mailing list