How to delete only the content of file in python

后端 未结 4 1350
無奈伤痛
無奈伤痛 2020-12-13 09:48

I have a temporary file with some content and a python script generating some output to this file. I want this to repeat N times, so I need to reuse that file (actually arra

4条回答
  •  猫巷女王i
    2020-12-13 10:08

    How to delete only the content of file in python

    There is several ways of set the logical size of a file to 0, depending how you access that file:

    To empty an open file:

    def deleteContent(pfile):
        pfile.seek(0)
        pfile.truncate()
    

    To empty a open file whose file descriptor is known:

    def deleteContent(fd):
        os.ftruncate(fd, 0)
        os.lseek(fd, 0, os.SEEK_SET)
    

    To empty a closed file (whose name is known)

    def deleteContent(fName):
        with open(fName, "w"):
            pass
    



    I have a temporary file with some content [...] I need to reuse that file

    That being said, in the general case it is probably not efficient nor desirable to reuse a temporary file. Unless you have very specific needs, you should think about using tempfile.TemporaryFile and a context manager to almost transparently create/use/delete your temporary files:

    import tempfile
    
    with tempfile.TemporaryFile() as temp:
         # do whatever you want with `temp`
    
    # <- `tempfile` guarantees the file being both closed *and* deleted
    #     on exit of the context manager
    

提交回复
热议问题