gpt4 book ai didi

python - 从 Python 列表中列出重复文件

转载 作者:太空宇宙 更新时间:2023-11-03 17:36:52 25 4
gpt4 key购买 nike

我试图将所有具有相似名称的文件列出到单独的文件夹中,但无法找出用于移动它们的名称。从下面开始,我在工作目录中创建具有重复名称的文件夹,然后通过 split 函数传递所有文件,以从 xmlName = xml.split('.')[1] 行获取名称的中间部分。现在 xmlName 只有文件名的一部分,这可以帮助我确定重复的名称。

下面是工作目录中的文件列表:

# ls
CRON.JC_ADA_SOURCE_DLOAD.xml Duplicate TERA.SC_CACHE_PURGE_01.xml
CRON.JC_ADA_SOURCE_WLOAD.xml POWE.BI_RUN_INFO_WKFLW_INF1.xml test.py
CRON.SC_ADA_CLEANUP_SCRIPT.xml POWE.JC_ADA_SOURCE_DLOAD.xml Unknown
CRON.SC_CACHE_PURGE_01.xml POWE.SC_CHECK_ADA_DATA_FILE_INF2.xml
#

下面是代码(我不确定如何仅列出重复的文件)。

#!/usr/bin/python

import os, sys

Working_Dir = "/home/export/Partition/JobDefinition"

if not os.path.exists('./Duplicate'):
os.makedirs('./Duplicate', 0755)

for path, dir, files in os.walk(Working_Dir):
for xml in files:
xmlName = xml.split('.')[1]
if xmlName == xmlName:
print xmlName

输出:

# python test.py
SC_ADA_CLEANUP_SCRIPT
SC_CHECK_ADA_DATA_FILE_INF2
JC_ADA_SOURCE_WLOAD
BI_RUN_INFO_WKFLW_INF1
JC_ADA_SOURCE_DLOAD
SC_CACHE_PURGE_01
JC_ADA_SOURCE_DLOAD
SC_CACHE_PURGE_01
py
#

我需要的输出是下面的名称,以便我可以将相应的文件移动到重复文件夹:

JC_ADA_SOURCE_DLOAD
SC_CACHE_PURGE_01

最佳答案

懒惰的答案

collections.Counter会用魔法做你想做的事。

import collections

c = collections.Counter([])

for path, dir, files in os.walk(Working_Dir):
c += collections.Counter([xml.split('.')[1] for xml in files])

稍微不那么懒惰的答案

使用 set 跟踪每个唯一的文件

seen = set()
duplicates = set()
for path, dir, files in os.walk(Working_Dir):
for xml in files:
xmlName = xml.split('.')[1]
if xmlName in seen:
duplicates.add(xmlName)
seen.add(xmlName)

关于python - 从 Python 列表中列出重复文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31105323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com