【问题标题】:Python - Glob without absolute pathPython - 没有绝对路径的 Glob
【发布时间】:2015-04-24 12:21:10
【问题描述】:

我正在使用 glob 来获取大量图像的图片对的名称。唯一的问题是我得到了绝对路径,我不想要那个,我只需要图片的名称。我该怎么办?

import glob

A=sorted(glob.glob('/media/test/A*.png'))
B=sorted(glob.glob('/media/test/B*.png'))
NumbSeq=len(A)
for i in range(0,NumbSeq):
  print "\"%s\",\"%s\","%(A[i],B[i])

我明白了:

 "/media/test/A170900_85495.460376.png","/media/test/B170900_85495.460376.png"

我需要那个:

 "A170900_85495.460376.png","B170900_85495.460376.png"

【问题讨论】:

    标签: python path glob


    【解决方案1】:

    使用glob1(dirname, pattern) 方法而不是glob(pathname) 来获取文件名。

    >>> glob.glob1("some_dir", "*.png")
    ['foo.png', 'bar.png', ...]
    
    >>> glob.glob("some_dir/*.png")
    ['/home/michael/A_dir/B_dir/some_dir/foo.png',
    '/home/michael/A_dir/B_dir/some_dir/bar.png',
    ...]
    

    【讨论】:

      【解决方案2】:

      试试这个

      os.path.basename(A[i])
      

      这将单独返回文件名。

      import glob
      import os
      
      A=sorted(glob.glob('/media/test/A*.png'))
      B=sorted(glob.glob('/media/test/B*.png'))
      NumbSeq=len(A)
      
      for i in range(0,NumbSeq):
        print '"%s","%s"'%(os.path.basename(A[i]),os.path.basename(B[i]))
      

      这会给你

      "A170900_85495.460376.png","B170900_85495.460376.png"
      

      【讨论】:

      • 感谢您的帮助! ;) 但我得到 ' "A170900_85495.460376.png","B170900_85495.460376.png" ' 而不是 "A170900_85495.460376.png","B170900_85495.460376.png" 你知道如何抑制它吗?
      • @user3601754 将打印语句更改为print str(os.path.basename(A[i])) +"," + str(os.path.basename(B[i]))
      【解决方案3】:

      在打印之前将AB 中的每个名称传递给os.path.basename

      for i in range(0,NumbSeq):
          print '"%s","%s"'%(os.path.basename(A[i]),os.path.basename(B[i]))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-02
        相关资源
        最近更新 更多