asksaveasfile() function in Python Tkinter

Tkinter is Python's built-in GUI toolkit. The asksaveasfile() function from tkinter.filedialog opens a save dialog that allows users to specify where to save a file and returns a file object for writing.

Syntax

asksaveasfile(mode='w', **options)

Parameters

Common parameters include:

  • mode − File opening mode (default: 'w' for write)
  • filetypes − List of file type tuples
  • defaultextension − Default file extension
  • initialdir − Initial directory to open
  • title − Dialog window title

Basic Example

Here's how to create a simple save file dialog ?

import tkinter as tk
from tkinter import ttk
from tkinter.filedialog import asksaveasfile

def save_file():
    file_types = [('Text files', '*.txt'), ('All files', '*.*')]
    file = asksaveasfile(
        mode='w',
        filetypes=file_types,
        defaultextension='.txt',
        title="Save your file"
    )
    
    if file:
        file.write("Hello, World!\nThis is a test file.")
        file.close()
        print("File saved successfully!")
    else:
        print("Save operation cancelled")

# Create main window
root = tk.Tk()
root.title("File Save Demo")
root.geometry('300x150')

# Create save button
save_btn = ttk.Button(
    root, 
    text='Save File', 
    command=save_file
)
save_btn.pack(pady=30)

root.mainloop()

Advanced Example with Different File Types

You can specify multiple file types for the save dialog ?

import tkinter as tk
from tkinter import ttk
from tkinter.filedialog import asksaveasfile
import json

def save_different_formats():
    file_types = [
        ('Text files', '*.txt'),
        ('JSON files', '*.json'),
        ('CSV files', '*.csv'),
        ('All files', '*.*')
    ]
    
    file = asksaveasfile(
        mode='w',
        filetypes=file_types,
        defaultextension='.txt',
        title="Choose file format and location"
    )
    
    if file:
        filename = file.name
        if filename.endswith('.json'):
            data = {"message": "Hello World", "type": "JSON"}
            json.dump(data, file, indent=2)
        elif filename.endswith('.csv'):
            file.write("Name,Age,City\nJohn,25,New York\nJane,30,London")
        else:
            file.write("This is a text file\nSaved using asksaveasfile()")
        
        file.close()
        print(f"File saved as: {filename}")

# Create application
root = tk.Tk()
root.title("Multi-format File Save")
root.geometry('350x200')

save_btn = ttk.Button(
    root, 
    text='Save File (Multiple Formats)', 
    command=save_different_formats
)
save_btn.pack(pady=40)

root.mainloop()

Return Value

The function returns:

  • A file object opened in the specified mode if user selects a location
  • None if the user cancels the dialog

Key Points

  • Always check if the returned file object is not None before writing
  • Remember to close the file after writing to save changes
  • The dialog shows only the file types specified in filetypes
  • Users can still type any filename regardless of the specified types

Conclusion

The asksaveasfile() function provides an easy way to let users choose where to save files in Tkinter applications. Always handle the case where users might cancel the dialog and remember to close files after writing.

---
Updated on: 2026-03-15T18:17:13+05:30

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements