Диалог tk.asksaveasfile: TypeError: ожидаемый объект str, bytes или os.PathLike, а не _io.TextIOWrapper - PullRequest
0 голосов
/ 25 декабря 2018

Я пишу код, используя технологии Python3 и tkinter.Я пытаюсь сохранить вставленный текст в левом фрейме (textArea1) графического интерфейса в файле на моем диске, но я получаю сообщение TypeError.Вставленный текст не сохраняется в файле.Требуемый режим файла = 'w', тип (*. Txt), кодировка = 'utf-8'.Кто-нибудь может помочь?Я новичок в кодировании.Я пытаюсь создать инструмент изучения языка на основе текста.В левую рамку пользователь вставляет скопированный текст или загружает такой текст для изучения.Одним нажатием кнопки в правой рамке перечисляются неизвестные слова, которые пользователь должен найти с помощью словаря.Третий кадр внизу проверит знание пользователем созданных словарей.

Я пробовал много способов решить проблему saveas , но не смог.Мне нужно, чтобы пользователь выбрал, где и под каким именем сохранить вставленный файл на своем диске.Важно сохранить файл в формате txt, encoding = utf-8, поскольку текст содержит специальные символы.

from tkinter import filedialog, re
from tkinter import *
from tkinter.scrolledtext import *
import os

input_Value = ''

# FUNCTIONS
def doNothing():
    pass

def open_File():
    filename = filedialog.askopenfilename(initialdir='/', title='Select File ',filetypes=(("Text file", "*.txt"), ("All files", "*.*")))
    file = open(filename, encoding='UTF-8')
    contents = file.readlines()
    contents = ''.join(contents) # this is a string
    textArea1.insert(END, contents)

    text = re.findall(r'\w+', contents)
    with open('known_words.txt', encoding='UTF-8') as file:
        content=file.read()
        mySet=set(text)
        finList=list(mySet)
        print(finList)
        for word in finList:
            if word in contents:
                textArea2.insert(END, word+' = '+'\n')
        file.close()

def retrieveInput():
    global input_Value
    input_Value = textArea1.get('1.0', 'end-1c')
    print(input_Value)

def save_File_As():
    filename = filedialog.asksaveasfile(initialdir = "/", filetypes = (("all files","*.*"),("jpeg files","*.jpg")))

##    if file != None:
##        file.write(input_Value)
##        file.close()

    file=open(filename, mode='w', encoding="UTF-8")
    file.write(input_Value)
    file.close()

##    with open("deutsch2.txt", 'w', encoding="UTF-8") as txt_file:
##        print(filename)
##        txt_file.write(input_Value)

# Root for main window
...