我将如何去写入Python中的CSV文件?在csv文件中查找单元格?
我基本上有2列。第一列是交易名称列表,第二列是时间。
我需要创建一段代码,可以在用户填写输入框时更新计时列。
我已经在tkinter中设置了输入框并设置了文本变量。我可以得到变量,但我遇到的问题是采取文本变量并在csv文件中找到正确的单元格并覆盖它。
本质上我想找到正确的单元格并粘贴csv文件中的值。
有什么想法?
感谢
我将如何去写入Python中的CSV文件?在csv文件中查找单元格?
我基本上有2列。第一列是交易名称列表,第二列是时间。
我需要创建一段代码,可以在用户填写输入框时更新计时列。
我已经在tkinter中设置了输入框并设置了文本变量。我可以得到变量,但我遇到的问题是采取文本变量并在csv文件中找到正确的单元格并覆盖它。
本质上我想找到正确的单元格并粘贴csv文件中的值。
有什么想法?
感谢
您可以创建中的临时文件,该行复制到tmp文件,然后只替换与交易名称开头的行。假设一个CSV每行的元组[名称,值],您可以使用这样的事情:
from tempfile import mkstemp
from os import close
from shutil import move
def update(filename, name, value):
fd, path = mkstemp()
with open(path,'w') as tmpfile:
with open(filename) as csv:
for line in cvs:
if line.startswith(name):
tmpfile.write(",".join([name,value]))
else:
tmpfile.write(line)
close(fd)
move(path, filename)
不错的迭代解决方案,尽管OP可能希望使用'csv'模块来读取和写入文件,因为它可以轻松处理现实世界中存在的许多CSV文件格式的方言。 – martineau
假设你有一个名为file.csv
文件看起来像这样:
Col1,Col2
entry1,timestamp1
entry2,timestamp2
您可以使用像这样的csv库来修改任何条目,并将其粘贴到一个新.csv.new文件(你可以选择删除“新”扩展,但它会覆盖旧的文件):
import csv
csv_file = "file.csv"
file_dict = {}
with open(csv_file, mode='rb') as f:
reader = csv.reader(f)
top_row = next(reader)
for row in reader:
file_dict[row[0]] = row[1]
# get transaction name and timing
transaction_name = "entry1"
timing = "timestamp3"
# do the update
file_dict[transaction_name] = timing
# create updated version of file
with open(csv_file+".new", mode='wb') as out_f:
writer = csv.writer(out_f)
writer.writerow(top_row)
writer.writerows(file_dict.items())
注意这w ^可能会重新安排您的CSV文件。你没有具体说明这是否是一个问题。如果是可以排序字典或使用OrderedDict。在这里看到更多的信息: https://docs.python.org/2/library/collections.html#collections.OrderedDict
这需要将整个文件读入内存,这可能是一个问题(在任何情况下都是不必要的)。 – martineau
我在第一个file_dict = {}上得到上述解决方案的语法错误。这是因为它是函数的第三部分吗?它开始作为高清updatetimings(): 问= messagebox.askquestion( '验证', '你确定要更新定时?') 如果问== '是': 尝试: \t newv5ctiming =浮动(newv5c获得()) \t newv62timing =浮子(newv62.get()) \t newdisptiming =浮子(newdisp.get()) \t csv_file = “Timings.csv” timings_list = []中的前几个步骤的工作很好,但是当它命中时会出现语法file_dict = {} –
你得到的错误是什么?您可能需要查看它或发布另一个溢出问题,如果它尚未在此处。 – supernun
也许检查模块'pandas'和函数'read_csv'和'write_csv'? –