mkstemp on pre-2.3 Python
djw
donald.welch at hp.com
Fri Nov 19 15:10:39 EST 2004
Thank you very much, that was the ticket!
-Don
Nick Craig-Wood wrote:
> djw <donald.welch at hp.com> wrote:
>> Hi, c.l.p'ers-
>>
>> I working on some code that creates a temporary file on Linux. I found
>> some code that the BDFL posted previously on the newsgroup and adapted
>> it for my use. I can't get the "pre-2.3" code to work.
>>
>>
>> try:
>> make_temp_file = tempfile.mkstemp # 2.3+
>> except AttributeError:
>> def make_temp_file( suffix='', prefix='', dir='', text=False ):
>> #pre-2.3
>> path = tempfile.mktemp( suffix )
>> fd = os.open( path, os.O_WRONLY|os.O_CREAT|os.O_EXCL, 0700 )
>> os.unlink( path )
>> return ( os.fdopen( fd, 'w+b' ), path )
>>
>>
>>
>> Here's the error:
>>
>> File "utils.py", line 583, in make_temp_file
>> return ( os.fdopen( fd, 'w+b' ), path )
>> OSError: [Errno 22] Invalid argument
>>
>> Anybody have any ideas on what I am doing wrong?
>
> Replace the os.O_WRONLY with os.O_RDWR and all will be fine
>
>>>> import tempfile, os
>>>> suffix=""
>>>> path = tempfile.mktemp( suffix )
>>>> fd = os.open( path, os.O_RDWR|os.O_CREAT|os.O_EXCL, 0700 )
>>>> f = os.fdopen( fd, 'w+b' )
>>>> f
> <open file '<fdopen>', mode 'w+b' at 0xb7de7a60>
>>>> print >>f, "Hello"
>>>> f.seek(0)
>>>> f.read()
> 'Hello\n'
>>>> f.close()
>
More information about the Python-list
mailing list