【问题标题】:How to extract filenames with two file extensions? [closed]如何提取具有两个文件扩展名的文件名? [关闭]
【发布时间】:2019-04-30 12:44:53
【问题描述】:

我有一个文件夹,其中包含多个具有双扩展名 ".nii.gz" 的文件。我想使用os.path.basename 提取文件名,但此函数仅返回带有第一个扩展名“.nii” 的文件名。如何提取具有两个扩展名的完整文件名?

【问题讨论】:

    标签: python filepath os.path dirname


    【解决方案1】:

    为什么不使用好旧的str.split

    filename = 'file.nil.gz'
    li = filename.split('.')
    basename = li[0]
    extensions = li[1:]
    
    print(basename)
    #file
    print(extensions)
    #['nil', 'gz']
    

    【讨论】:

      【解决方案2】:

      我认为,最佳做法是使用pathlib 进行文件路径操作。

      代码:

      from pathlib import Path
      
      print(Path("C://filename.tar.gz").suffixes)
      

      结果:

      ['.tar', '.gz']
      

      要将所有后缀提取到一个字符串中,只需将它们连接起来:

      print("".join(Path("C://filename.tar.gz").suffixes))
      

      【讨论】:

      • OP 想要提取文件名而不是后缀
      • @ruslaniv,所以他得到了答案,你想从我这里得到什么?
      【解决方案3】:

      此函数提取整个名称,即使有多个“.”:

      from os import listdir
      from os.path import isfile, join
      mypath = 'blabla'
      onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]
      print(onlyfiles)
      

      如果你不想看到扩展,那么这里是附加组件:

      onlyfiles = [f.split('.')[0] for f in listdir(mypath) if isfile(join(mypath, f))]
      print(onlyfiles)
      

      【讨论】:

        猜你喜欢
        • 2015-10-03
        • 1970-01-01
        • 2013-11-03
        • 1970-01-01
        • 1970-01-01
        • 2013-06-02
        • 2012-04-05
        • 1970-01-01
        相关资源
        最近更新 更多