如何就地编辑文件

如何就地编辑文件

我正在使用日志模块在文件中写入一些日志

#filename : demo.py
import logging
#other imports as well
logging.basicConfig(filename="myfile.log",
                    format='%(asctime)s %(funcName)s %(levelname)s %(message)s',
                    filemode='w')
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logger.debug("Writing logs in this way")

但有时我的模块会写很多nullvalues

^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@

所以我编写了一个脚本来删除这些值。但是当我修改时,myfile.log我的进一步日志没有被存储。我知道这是由于文件流的更改/关闭造成的myfile.log。是否可以修改我的日志文件而不会损害或丢失我已经存在的流demo.py。我正在使用ubuntu : 18.04python : 3.6.9
为了进行修改,我尝试了以下方法

  1. 我正在使用脚本sed -i -e 's/\o00//g' myfile.log 来修改文件
  2. 我使用 vim 手动编辑文件:vim myfile.log要删除行,我使用dd然后关闭:wq

来自一条评论https://stackoverflow.com/questions/64875452/modify-a-file-without-changing-its-file-stream我知道这两种方法都会用新文件覆盖旧文件。有没有办法就地编辑文件?

相关内容