Используйте возвращаемое значение как переменную без вызова всей функции - PullRequest
0 голосов
/ 27 февраля 2019

Вот моя цель:

Создать скрипт, который принимает 2 CSV-файла и возвращает 3-й CSV-файл, содержащий только различия.

Я использую Python 3.7.2.

Вот мой код:

def findFile1():
    filename =  ## prompts the user to select a .csv file.
    with open(filename, 'r') as t1:
        fileone = t1.readlines()
    return fileone


def findFile2():
    filename =  ## prompts the user to select another .csv file.
    with open(filename, 'r') as t2:
        filetwo = t2.readlines()
    return filetwo


def saveFile():
    filename =  ## prompts the user to name and choose a location to save a new .csv file.
    fileone = findFile1() ##Here I would just like to readlines from the first CSV file. Not run the whole script again. 
    filetwo = findFile2() ##Here I would just like to readlines from the second CSV file. Not run the whole script again.
    with open(filename, 'w') as outFile:
        for line in filetwo:
            if line not in fileone:
                outFile.write(line)

Все, что я хочу, это использовать возвращаемые значения из первых 2 функций, а не вызывать всю функцию снова.

ОБНОВЛЕНИЕ: Я смогчтобы решить это с предложением Чарльза Даффи «импортировать functools и поставить строку @ functools.lru_cache () над вашими функциями, и все будущие вызовы будут повторно использовать результаты предыдущего вызова»

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

ОБНОВЛЕНИЕ: мне удалось решить эту проблему с предложением Чарльза Даффи «импортировать functools и поставить строку @ functools.lru_cache () над вашими функциями, и все будущие вызовы будут повторно использовать результаты предыдущего вызова»

0 голосов
/ 27 февраля 2019

без достаточного количества информации я делаю некоторые предположения здесь: также я не знаком с tkinter:

вот ссылка для некоторой помощи по передаче параметров вашим функциям с помощью кнопки Как пройтиаргументы команды Button в Tkinter?

from tkinter import filedialog
from tkinter import messagebox
from tkinter import *

master = Tk()

def findFile1():
    master.filename =  filedialog.askopenfilename(initialdir = "C:/",title = "Select file 1",filetypes = (("CSV","*.csv"),("all files","*.*")))
    print (master.filename)
    with open(master.filename, 'r') as t1:
        fileone = t1.readlines()
    return fileone


def findFile2():
    master.filename =  filedialog.askopenfilename(initialdir = "C:/",title = "Select file 2",filetypes = (("CSV","*.csv"),("all files","*.*")))
    print (master.filename)
    with open(master.filename, 'r') as t2:
        filetwo = t2.readlines()
    return filetwo


def saveFile(fileone, filetwo):
    master.filename =  filedialog.asksaveasfilename(initialdir = "C:/",title = "Save file",filetypes = (("CSV","*.csv"),("all files","*.*")))
    print (master.filename)
    with open(master.filename, 'w') as outFile:
        for line in filetwo:
            if line not in fileone:
                outFile.write(','.join(line.split()))
    messagebox.showinfo("Sucess", "File created successfully!")


file1 = Button(master, text="Load file 1", command=findFile1)
file1.pack()

file2 = Button(master, text="Load file 2", command=findFile2)
file2.pack()

start = Button(master, text="START", command=saveFile)
start.pack()

master.geometry("300x300")

mainloop()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...