Указание пути к файлу пользователем

Подскажите как сделать так, что бы моя программа позволяла указывать пользователем путь к файлу

import os
import sys

def start(): 
    while True:
        choise = (int (input('1,2,3\n')))

        if choise == 1: #если ввели 1 вызывает функцию crypt
            crypt()
        if choise == 2: #если ввели 2 вызывает функцию deCrypt
            deCrypt()
        if choise == 3:
            break
        
        
        




def crypt(print=None):
    degree = int(input('введите 1/2/4/8\n')) # ввод степени шифрования
    text_len = os.stat('start_text.txt').st_size # узнаем размер тектового файла
    img_len = os.stat('start_image.bmp').st_size # узнаем размер изображения

    if text_len >= img_len*degree/8-54: # проверка вместимости текста
        return ['Слишком длинный текст!',]
    else:
        text = open('start_text.txt','r' ) #открываем текстовый файл на чтение
        start_bmp = open('start_image.bmp', 'rb') #открываем изображение на чтение побитово
        encode_bmp = open('finish_image.bmp', 'wb')#открываем изображение на запись побитово

        first54 = start_bmp.read(54) #считываем первые 54 бита со стартового файла
        encode_bmp.write(first54) #записываем информацию о файле


        text_mask, img_mask = create_masks(degree) #создание масок

        while True:
            symbol = text.read(1) # происходит чтение посимвольно
            if not symbol:
                break #если символы закончились выйти из цикла

            symbol = ord(symbol) # преобразовываем букву в ее числовой код

            for byte_amount in range(0, 8, degree):
                img_byte = int.from_bytes(start_bmp.read(1), sys.byteorder) & img_mask  #логическое умножение битового значения символа и маски изображения
                bits = symbol & text_mask #логическое умножение кода символа и маски текста 
                bits >>= (8 - degree) #сдвиг 

                img_byte |= bits #логическое сложение 

                encode_bmp.write(img_byte.to_bytes(1, sys.byteorder)) #запись в картинку по одному байту
                symbol <<= degree #сдвиг на degree


        encode_bmp.write(start_bmp.read()) #запись в картинку

        text.close() #закрыть файл
        start_bmp.close() #закрыть файл
        encode_bmp.close()#закрыть файл
        print("Шифрование завершено успешно!")
        

def create_masks(degree):
    text_mask = 0b11111111 #маска текста
    img_mask = 0b11111111 #маска изображения

    text_mask <<= (8 - degree) 
    text_mask %= 256
    img_mask >>= degree 
    img_mask <<= degree #обнуляем последнее количество битов равных значению degree

    return text_mask, img_mask

def deCrypt():
    degree = int(input('enter 1/2/4/8\n')) #ввод степени шифрования
    symbs = (int(input("введите количество символов для чтения:")))
    to_read = symbs 


    img_len = os.stat('finish_image.bmp').st_size #находим размер готового изображения

    if to_read >= img_len*degree/8-54: #проверка вместимости текста
        return ['Too long text!',]

    text = open('finish_text.txt', 'w') #открывае текст на запись
    encoded_bmp = open('finish_image.bmp', 'rb') #открываем изображение на чтение побитово

    encoded_bmp.seek(54)# перемещение курсора на 54 символ

    img_mask = create_mask(degree) #находим маску
    img_mask = ~img_mask #меняет значения маски на обратные

    read = 0
    while read < to_read:
        symbol = 0

        for bits_read in range(0, 8, degree):
            img_byte = int.from_bytes(encoded_bmp.read(1), sys.byteorder) & img_mask #логическое умножение первого байта картинки и маски изображения

            symbol <<= degree
            symbol |= img_byte #логическое сложение
            
        read += 1
        text.write(chr(symbol)) # записываем символы в текстовый файл

    text.close() #закрываем файл
    encoded_bmp.close() #закрываем файл
    print("Расшифровка завершена успешно!")

def create_mask(degree):
    img_mask = 0b11111111 #маска текста

    img_mask >>= degree # обнуляем последние элементы маски
    img_mask <<= degree

    return img_mask

start()


Можно добавить Виджет Menu, как один из вариантов.

Дополнительная информация по “Меню”: Меню, подменю и панель инструментов в Tkinter

Так же как и всё остальное тут вводится, через input.

filepath = input('Enter file path: ')