【问题标题】:Removing non-matching filenames from a list - Python [closed]从列表中删除不匹配的文件名 - Python [关闭]
【发布时间】:2019-01-16 08:43:36
【问题描述】:

我正在从目录中读取文件名。然后我将输出截断,所以我只有文件名的前 10 个字符,因为这会导致输出有重复项和我不想包含的文件名。 这是我的代码:

import os

for path, subdirs, files in os.walk(r'C:\\Users\User\Documents'):
   for filename in files:
        f = os.path.join(path, filename)
        print (str(f)[25:35])

这会返回一个像这样的列表:

NUMBER0001
NUMBER0002
NUMBER0003
XXXXXXXX11
XXXXXXXX11
XXXXXXXX11

预期输出:

NUMBER0001
NUMBER0002
NUMBER0003

如何从列表中删除不以“NUMBER”开头的文件,或者如何删除以XXX 开头的文件?

另外,是否可以按照创建日期的顺序对输出进行排序?(文件名末尾的数字不代表文件的创建顺序)。

【问题讨论】:

  • 请写一个预期的输出
  • 不确定我是否清楚 - 我们是在删除 重复项,还是与指定模式不匹配的名称
  • @KarlKnechtel 我已经更新了我的问题

标签: python string directory


【解决方案1】:

以下代码仅用于获取具有“NUMBER”前缀的文件名。

for path, subdirs, files in os.walk(r'C:\\Users\User\Documents'):
   for filename in files:
        if 'NUMBER' in filename:
            f = os.path.join(path, filename)
            print (str(f)[25:35])

【讨论】:

  • .startswith 方法似乎更适合此目的,以避免出现“XXXXNUMBER001”的情况来源:stackoverflow.com/questions/7539959/…
  • @Kryesec 我同意。尽管根据 JackU 向我们展示的列表,我认为“如果”条件就足够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多