使用 Python OS 模块用新数据覆盖现有的 txt 文件

Overwriting an existing txt file with new data using Python OS module

我正在遵循 SO 用户“qmorgan”here 提到的代码,基本上,如果文件不存在,我会尝试创建新的文本文件。如果文件存在则覆盖现有文件。 为此,我的代码如下所示。我面临的问题是使用 'a' 写入文件,它附加文本而不是覆盖它。因为 'a' 函数是在第一个 if 条件下追加文本。如果我使用“W”而不是“a”,那么它只会写入最后一条记录,而不是所有记录。

在此先感谢您的帮助和努力!

Python代码

filename='test.txt'
  
tables=["schema.table1","schema2.table2"]
    
for table in tables:
   cur.execute (f'select count(*) from {table};')
   result=cur.fecthone()
   count=result[0] if result else 0
   for row in result:
       if os.path.exists(filename):
            append_write='a'
            my_file.close()
       else:
          append_write='w+'
       my_file=open(filename,append_write)
       my_file.write(f"the table {table} contained {count} rows. \n")
       my_file.close()

一开始只打开一次文件,而不是每次查询都单独打开。然后你可以简单地使用w模式覆盖它。

也不需要 for row in result: 循环,因为您永远不会在任何地方使用 rowresult 是一个只有一个元素的元组,即 COUNT(*) 返回的计数,没有其他可循环的内容。

filename='test.txt'
  
tables=["schema.table1","schema2.table2"]
    
with open(filename, 'w') as my_file:
    for table in tables:
        cur.execute(f'select count(*) from {table};')
        (count,) = cur.fetchone()
        my_file.write(f"the table {table} contained {count} rows. \n")