Python write in mkstemp() file

前端 未结 3 2378
鱼传尺愫
鱼传尺愫 2021-02-20 01:26

I am creating a tmp file by using :

from tempfile import mkstemp

I am trying to write in this file :

tmp_file = mkstemp()
file          


        
相关标签:
3条回答
  • 2021-02-20 02:13

    The answer by smarx opens the file by specifying path. It is, however, easier to specify fd instead. In that case the context manager closes the file descriptor automatically:

    from tempfile import mkstemp
    
    fd, path = mkstemp()
    
    # use a context manager to open (and close) file descriptor fd (which points to path)
    with open(fd, 'w') as f:
        f.write('TEST\n')
    
    # This causes the file descriptor to be closed automatically
    
    0 讨论(0)
  • 2021-02-20 02:14

    This example opens the Python file descriptor with os.fdopen to write cool stuff, then close it (at the end of the with context block). Other non-Python processes can use the file. And at the end, the file is deleted.

    import os
    from tempfile import mkstemp
    
    fd, path = mkstemp()
    
    with os.fdopen(fd, 'w') as fp:
        fp.write('cool stuff\n')
    
    # Do something else with the file, e.g.
    # os.system('cat ' + path)
    
    # Delete the file
    os.unlink(path)
    
    0 讨论(0)
  • 2021-02-20 02:24

    mkstemp() returns a tuple with a file descriptor and a path. I think the issue is that you're writing to the wrong path. (You're writing to a path like '(5, "/some/path")'.) Your code should look something like this:

    from tempfile import mkstemp
    
    fd, path = mkstemp()
    
    # use a context manager to open the file at that path and close it again
    with open(path, 'w') as f:
        f.write('TEST\n')
    
    # close the file descriptor
    os.close(fd)
    
    0 讨论(0)
提交回复
热议问题