【问题标题】:How to print the filename returned by askopenfilename?如何打印 askopenfilename 返回的文件名?
【发布时间】:2014-09-23 00:43:04
【问题描述】:

如代码所示,我想打印文件名。

def callback():
    file_name = open(askopenfilename(filetypes = (("Music File", "*.mp3")
                                                         ,("Video files", "*.mpeg")
                                                        )),'r')

    print file_name

它打印了这一行

<open file u'C:/Users/121794/Desktop/New folder (2)/Tonight.mp3', mode 'r' at 0x01D63C80>

我怎样才能得到带有扩展名的文件名?例如“Tonight.mp3”

【问题讨论】:

    标签: python python-2.7 tkinter


    【解决方案1】:

    排除对open的调用:

    filename = askopenfilename(filetypes=(("Music File", "*.mp3"),
                                          ("Video files", "*.mpeg")))
    

    如果您只想要文件名(不包括目录路径),请使用os.path.basename:

    >>> import os
    >>> os.path.basename('a/b/c')
    'c'
    

    【讨论】:

    • 我仍然无法获取/理解 os.path.basename('a/b/c') 部分
    • @user3817491, a/b/c 是可以从askopenfilename 返回的示例路径。
    • @user3817491,换句话说,filename = os.path.basename(filename)
    【解决方案2】:
    ## python 3.x
    f = file_name.split("/")
    print (f[-1])
    

    【讨论】:

    • 虽然这可能适用于给定的示例,但如果您想要可在不同操作系统上运行的可移植代码,最好只使用内置的 os.pathpathlib 函数。
    • 您好,欢迎来到 Stack Overflow!虽然这段代码可能会回答这个问题,但including an explanation 如何或为什么解决这个问题将真正有助于提高您的帖子质量。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
    猜你喜欢
    • 2019-03-07
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多