Not only does this change tle1.line and tle1.line2, but it goes back and changes the lines of 001.tle that were written with tle1.line1 and tle1.line2.

I can only assume that writelines is working with the pointers of the objects passed in and not the objects themselves, and then updating the file when the objects at those pointers change. However, I cannot find any documentation/report on this AT ALL. Even still, the file 000.tle should be CLOSED before the lines are changed, so this connection shouldn't exist at that point anyway, right?

So, I'm guessing I need to find a way to deep copy the strings I want to pass in?

Character Meaning
'r' open for reading (default)
'w' open for writing, truncating the file first
'x' open for exclusive creation, failing if the file already exists
'a' open for writing, appending to the end of the file if it exists
'b' binary mode
't' text mode (default)
'+' open a disk file for updating (reading and writing)
'U' universal newlines mode (for backwards compatibility; should not be used in new code)