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