File Creation Not Working In A Thread Class?

7stud bbxx789_05ss at yahoo.com
Sun May 11 15:19:01 EDT 2008


On May 11, 12:42 pm, bc90021 <pyt... at bc90021.net> wrote:
> > It's difficult to know what's wrong with the code you posted because:
>
> > * it is not self-contained: otherFile, fileName, pattern are names
> >   which you do not define;
>
> > * the IOError you reported earlier can't arise as a result of running
> >   this code.
>
> > * you claim it works unless you put it in a subclass of
> >   threading.Thread.  Why don't you post this instead, and show us the
> >   traceback?
>
> > HTH
>
> > FWIW, my crystal ball (whose predictions I don't usually report!) tells
> > me the same as Garry Herron's.
>
> Here's the thread class:
>
> #single file is the file we're working on, whose name is passed into the class and which does exist
> #matrix is a list of lists that contains info about the files - for this example, [c][0] contains a string, [c][2] contains true or false, and [c][3] contains a pattern to match
> #tfValue is another true or false value
>
> class FileProcThread(threading.Thread):
>         def __init__(self, singleFile, matrix, tfValue):
>                 self.singleFile = singleFile
>                 self.matrix = matrix
>                 self.tfValue = tfValue
>                 threading.Thread.__init__(self)
>         def run(self):
>                 (dirName, fileName) = os.path.split(self.singleFile)
>                 f = open(self.singleFile).readlines()
>                 copying = False
>                 for i in range(len(f)):
>                         for c in range (len(self.matrix)):
>                                 if (re.search(self.matrix[c][3], f[i])):
>                                         if (self.matrix[c][2] == True):
>                                                 copying = True
>                                                 if os.name == "posix":
>                                                         if (self.tfValue == False):
>                                                                 tempfileName = "\"proctemp/" + self.matrix[c][0] + "_tmp_" + fileName +
> ".txt\""
>                                                         else:
>                                                                 tempfileName = "\"proctemp/" + self.matrix[c][0] + "_other.txt\""
>                                                 else:
>                                                         if (self.tfValue == False):
>                                                                 tempfileName = "\"proctemp\\" + self.matrix[c][0] + "_tmp_" + fileName + ".txt\""
>                                                         else:
>                                                                 tempfileName = "\"proctemp\\" + self.matrix[c][0] + "_other.txt\""
>                                         else:
>                                                 copying = False
>                                 if (re.search(self.matrix[c][4], f[i])):
>                                         copying = False
>                         if (copying):
>                                 print "We're in copying, and tempfileName is: %s...\n" % tempfileName
>                                 #The above line correctly prints the temporary file name every time!  The directory exists, too!
>                                 g = open(tempfileName, 'a')  #This does not work.  Notice I do NOT have quotes around tempfileName, as I said.
>                                 g.write(f[i])
>                                 g.close()
>
> Like I said, this works FINE outside the thread class.  I hope that the formatting comes through...

...and the exact error message was?

Here is a tip: if you want people to help you, then you have to help
them to help you.  Personally, I wouldn't respond to anymore of your
questions because you seem incapable of posting the information that
was requested.



More information about the Python-list mailing list