2016-03-19 1 views
0

В настоящее время я использую asksaveasfile, чтобы сохранить файл, и это работает нормально. Единственная проблема, с которой я сталкиваюсь, это то, что я не могу получить новое имя файла. Я знаю, что существует asksaveasfilename, но если я использую их оба вместе, они появятся в двух окнах, которые мне не нужны. Если я пытаюсь напечатать вывод asksaveasfile я получаю следующее:Как сохранить как файл, но получить его имя одновременно?

<_io.TextIOWrapper name='/home/work/newfile.txt' mode='w' encoding='UTF-8'>. 

Есть ли способ, я могу просто получить имя файла из этого?

+0

просто используйте 'asksaveasfilename', затем откройте файл самостоятельно или используйте атрибут' .name'. –

ответ

1

Просто используйте атрибут результата asksaveasfile.name:

import tkinter 
file = tkinter.filedialog.asksaveasfile() 
name = file.name 

Или вы можете использовать asksaveasfilename затем открыть файл самостоятельно:

name = tkinter.filedialog.asksaveasfilename() 
file = open(name,'w') 

Таким образом, вы можете также использовать with заявление убедитесь, что файл закрыт правильно, что было бы неплохо в любом случае:

name = tkinter.filedialog.asksaveasfilename() 
with open(name,'w') as f: 
    NotImplemented #do stuff with the file 
+0

Это сработало, и я использовал функцию basename(), чтобы получить имя файла отдельно. Но я продолжаю получать расширение в имени файла. Например, я получаю файл «file.txt», но есть ли способ, которым я могу просто получить «файл»? –

+1

либо [python, как удалить расширение файла в строке] (https://www.google.com/webhp?#q=python+how+to+remove+file+extension+on+string), либо [Как получить имя файла без расширения из пути в Python?] (http://stackoverflow.com/questions/678236/how-to-get-the-filename-without-the-extension-from-a-path-in-python) –

+0

Да ... Я считаю, что существует функция os.path, чтобы отделить расширение от остальных, и это легко сделать, если найти последний «.». –

Смежные вопросы