想要从类似于这样的大量文件中 分离出没有对应json文件的jpg 并存至另一文件夹 该如何写代码呢
from os import listdir, path, mkdir
from collections import Counter
import shutil
# 列出当前目录下所有文件
files = listdir('.')
# 去除文件后缀名
files = [f.split('.')[0] for f in files]
# 统计文件名出现次数
counter = Counter(files)
# 若不存在 dist 文件夹,创建一个dist文件夹
if not path.exists('dist'):
mkdir('dist')
for key, value in counter.items():
if value == 1:
# 输出出现次数为 1 的文件名
print(key)
# 复制该文件至当前目录下的 dist 文件夹
if path.exists(key + ".jpg"):
shutil.copy(key + ".jpg", f"dist/{key}.jpg")
#!/usr/bin/env python
# _*_ coding: utf-8 _*_
# @Time : 2021/8/12 18:30
# @Author : twm
# @Version:V 0.1
# @File : te.py
# @desc :
import os
import shutil
if __name__ == '__main__':
jsonlist = []
jpglist = []
# 原地址
path1 = "D:/tmp/text"
# 目的地址
path2 = "D:/tmp/新建文件夹"
# 返回path下所有文件构成的一个list列表
filelist = os.listdir(path1)
# 遍历输出每一个文件的名字和类型
for item in filelist:
# 输出指定后缀类型的文件
if (item.endswith('.jpg')):
jpglist.append(item.split(".")[0])
elif (item.endswith('.json')):
jsonlist.append(item.split(".")[0])
difference = set(jsonlist).difference(set(jpglist))
for name in difference:
if name in jpglist:
shutil.move('{}/{}.jpg'.format(path1, name), path2)
elif name in jsonlist:
shutil.move('{}/{}.json'.format(path1, name), path2)