读取一次变量后如何更新变量

时间:2018-10-31 09:44:21

标签: python-3.x

我正在编写一个默认读取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”

0 个答案:

没有答案