Как получить имя файла с помощью os.path.basename без расширения '> - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь получить строку, содержащую только имя файла. Я знаю, что вы можете использовать os.path.basename, чтобы получить только имя файла без пути. Однако при этом по-прежнему сохраняется часть имени '>. Я хочу получить только имя файла и ничего больше.

IE

<_io.BufferedReader name='C:/Users/Sams PC/Desktop/file.txt'>
#printout using os.path.basename
file.txt'>
##Desired
file.txt

Для некоторого контекста того, что я использую, чтобы получить это, это мой сценарий (он использует tkinter):

def browse():
    result=tk.filedialog.askopenfile(parent=root,mode='rb',title='Choose a file')
    return result
print(browse())
print(os.path.basename(str(browse())))

1 Ответ

1 голос
/ 16 июня 2020

Вам нужно использовать filedialog.askopenfilename вместо filedialog.askopenfile, чтобы получить имя файла без побочных эффектов (например, при открытии файла). Это возвращает полный путь; вы можете извлечь имя файла из полного пути, используя os.path.basename

import os
import tkinter as tk
from tkinter import filedialog

def browse():
    root = tk.Tk()
    root.withdraw()
    fullpath = filedialog.askopenfilename(parent=root, title='Choose a file')
    filename = os.path.basename(fullpath)
    root.destroy()

    return filename

print(browse())
...