如何在 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 文件并正确解释它,您应该使用一些包,例如 pandas
或 xlrd
。另请注意,您不想在其中覆盖文件的if
块,实际上并没有创建新文件。我不确定是否在问题中未列出的以下代码中,您实际上是在创建一个新文件。
这只是一个sn-p
【参考方案1】:
如果用户选择覆盖文件,seek
、write
、truncate
的集合寻找到文件的开头,写入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 文件的主要内容,如果未能解决你的问题,请参考以下文章