TypeError: Can't convert 'int' object to str implicitly
Dave Angel
davea at davea.name
Fri Apr 26 13:52:07 EDT 2013
On 04/26/2013 01:28 PM, Chris Angelico wrote:
> On Sat, Apr 27, 2013 at 3:23 AM, Dave Angel <d at davea.name> wrote:
>> On 04/26/2013 11:05 AM, Chris Angelico wrote:
>>> I've checked out what fileinput.input() is doing here (ought to have
>>> done that earlier, sorry!) and I now understand this block of code
>>> more. You're replacing that word _in the file, on disk_, and then
>>> making the inverse replacement. This strikes me as dangerous; if
>>> anything happens to your process in the middle, the file will be
>>> damaged on disk. I would STRONGLY recommend rewriting this to use some
>>> other file - for instance, a temporary file.
>>
>> fileinput.Fileinput class already creates the temp file when you specify
>> inplace=True
>>
>> If it didn't, I'd also have to point out the hazards of doing in-place
>> updates in a text file where the new data and old is a different length.
>>
>> There still may be reasons to make an explicit backup, but I don't know what
>> they are.
>
> That's true if something goes wrong during the actual writing of the
> file only. But if the process bombs in the middle of the execution
> phase (which in the Python script is a single os.system() call), then
> the file will have been one-way changed on the disk - hence,
> "damaged". The explicit temporary file (and executing the temp file)
> is a much safer way to do it.
>
Only two of those sentences makes sense to me. I have no idea what
"execution phase" means, and don't know what would be done via an
os.system() call. I don't know what "one-way change" means
If I were specifying the fileinput stuff, I'd have said the new data
should be written to the temp file, so that at no time was the original
file in an in-between state.
--
DaveA
More information about the Python-list
mailing list