我正在编写一个默认读取CSV文件的应用程序。
我现在要添加一个函数,该函数应打开一个新文件,然后应替换默认文件。
第一个功能设置应用程序的基础。第二个功能是打开一个新文件。其选择应继续到第一个功能,替换 file 变量并更新应将内容保存到的文件。但是,我无法使用 file_open 函数“重新初始化”“ set_defaultfile”函数。
第一个功能的代码如下:
def set_defaultfile(self):
file = ""
if not file:
file = os.getcwd() + "/Note.csv"
else:
fopen = self.file_open()
file = fopen
df_content = {"title": [], "author": [], "year": [], "others": [], "note": []}
df_headers = ['title', 'author', 'year', 'others', 'note']
try:
with open(file, "r") as test:
f_reader = csv.DictReader(test, delimiter=',')
f_correct = open(file)
except FileNotFoundError:
with open(file, "a+") as f:
f_writer = csv.DictWriter(f, fieldnames=df_content)
f_writer.writeheader()
f.close()
file_content = file
return file_content
第二个功能的代码是:
def file_open(self):
df_headers = self.set_defaultfile()
headers = self.set_defaultfile()
fopen = filedialog.askopenfilename(initialdir="C:/",
title="Select file",
filetypes=(("CSV file", "*.csv"), ("all files", "*.*")))
self.clear_table()
with open(fopen, 'r') as file:
try:
csv_reader = csv.DictReader(file, skipinitialspace=True)
for row in csv_reader:
self.treeview.insert('', '0', values=(f'{row["title"]}',
f'{row["author"]}',
f'{row["year"]}',
f'{row["others"]}'))
except KeyError:
with open(fopen) as fin:
lines = fin.readlines()
lines[0] = lines[0].replace(headers, df_headers)
self.set_defaultfile()
我尝试使用命令 self.set_defaultfile (最后一行)返回第一个功能。我以为,在调用第一个函数之前,我可能需要“清空”变量 file 或添加“ file”作为随后被调用的参数。
def set_defaultfile(self, file):
self.file = file
...
...
def file_open(self):
...
self.set_defaultfile(file=fopen)
但是,在这种情况下,我收到错误消息: TypeError:set_defaultfile()缺少1个必需的位置参数:“ file”