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