如何在 Python 中覆盖 excel 文件

Posted

技术标签:

【中文标题】如何在 Python 中覆盖 excel 文件【英文标题】:How to overwrite an excel file in Python 【发布时间】:2016-07-09 21:10:00 【问题描述】:

这是我的代码,如果文件名存在,它会询问用户是否要覆盖,如果他们不这样做,代码已排序,但我很难找到它允许我覆盖的 excel 文件已经存在。

import os
filename = str(input("Please enter a file name\n"))
print(TableModel)
file_exists = False
while file_exists == False:
    if os.path.isfile(filename):
        file_exists = True
        overwrite = str(input("File name is in existance. Would you like to overwrite this yes. Y for yes, N for no\n"))

        if overwrite == "N" or overwrite == "n":
            print ("You have chosen not to overwrite this file")
            filename = str(input("Please enter a different file name\n"))

        elif overwrite == "y" or overwrite == "y":
            file_exists = True
            f = open(filename, 'w')
            text = f.read()
            text = re.sub('foobar', 'bar', text)
            f.seek(0)
            f.write(text)
            f.truncate()
            f.close()

【问题讨论】:

您应该查看 openpyxl 库。普通文件方法不适用于 excel 当我保存它时,我将它另存为 exc 您的问题不是很清楚:从代码看来,您打开的是普通文本文件而不是 excel 文件。如果只是纯文本文件,使用open(filename, 'w') 打开文件会覆盖现有文件。要打开一个实际的 excel 文件并正确解释它,您应该使用一些包,例如 pandasxlrd。另请注意,您不想在其中覆盖文件的if 块,实际上并没有创建新文件。我不确定是否在问题中未列出的以下代码中,您实际上是在创建一个新文件。 这只是一个sn-p 【参考方案1】:

如果用户选择覆盖文件,seekwritetruncate的集合寻找到文件的开头,写入s删除新文件,然后截断(删除)原始文件的任何剩余部分。

Further, performing these operations by calling with to get your filehandler is much safer.

with open(filename, 'r+') as fh:
    text = fh.read()                      # read file
    text = re.sub('foobar', 'bar', text)  # perform operation
    fh.seek(0)                            # seek the to beginning
    fh.write(text)                        # write out new contents
    fh.truncate()                         # truncate any leftovers

【讨论】:

以上是关于如何在 Python 中覆盖 excel 文件的主要内容,如果未能解决你的问题,请参考以下文章

python如何向表格中添加数据,不覆盖原有数据?

如何在没有消息的情况下保存/覆盖现有的 Excel 文件

java中如何把数据导入到已有的Excel中,数据不覆盖

Python 和 Excel:覆盖现有文件总是提示,尽管 XlSaveConflictResolution 值

如何将dataframe导入到excel且不覆盖原有内容

如何在 Python 中覆盖文件?