gpt4 book ai didi

python - 扫描重复的文件名

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

想象几个文件夹,例如

d:\myfolder\abc
d:\myfolder\ard
d:\myfolder\kjes
...

并且在每个文件夹中,都有诸如

之类的文件
0023.txt, 0025.txt, 9932.txt in d:\myfolder\abc
2763.txt, 1872.txt, 0023.txt, 7623.txt in d:\myfolder\ard
2763.txt, 2873.txt, 0023.txt in d:\myfolder\kjes

因此,存在三个 0023.txt 文件和两个 2763.txt 文件。

我想创建一个包含以下信息的文件(例如,d:\myfolder\dup.txt):

0023 3
0025 1
9932 1
2763 2
1872 1
7623 1
2873 1

如何在 Python 中实现它?谢谢。

最佳答案

未经过广泛测试,但这有效:

import os, os.path

dupnames={}
for root, dirs, files in os.walk('myfolder'):
for file in files:
fulpath=os.path.join(root,file)
if file in dupnames:
dupnames[file].append(fulpath)
else:
dupnames[file]=[fulpath]

for name in sorted(dupnames):
print name, len(dupnames[name])

其工作原理如下:

  1. 创建一个空字典;
  2. 遍历文件层次结构;
  3. 使用基本名称:[文件路径]在列表字典中创建条目(或附加现有列表)。

os.walk之后,你将得到一个像这样的字典:

{0023.txt: ['d:\myfolder\abc', 'd:\myfolder\kjes'], 0025.txt: ['d:\myfolder\abc']}

因此,要获得输出,只需迭代已排序的字典并计算列表中的条目即可。您可以将其输出重定向到文件,也可以直接在 Python 中打开输出文件。

您显示的输出已去除扩展名 - 00230023.txt。如果您有 0023.txt0023.py 会发生什么?相同的文件还是不同的?对于操作系统来说,它们是不同的文件,所以我保留了扩展名。如果这是您想要的输出,它很容易被剥离。

关于python - 扫描重复的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10425151/

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