python - 查找与foldername不同的文件名

时间:2016-12-02 01:55:50

标签: python python-3.x compare bigdata

我的公司有名为

的文件
"3688-35(DUSTY GREY-BLK).jpg"
"3688-36A(SLIVER).jpg"
"..."

应放在“ 3688 ”文件夹中。

经过多年和多年我面临 6位数的图片和~3500个文件夹需要检查无数错位的图片放在右侧文件夹中,

所以我认为我可以写一个脚本只能列出错误放置的文件和文件夹,如

"1111/1112.jpg"
"1234/1243.jpg"

在我进行一些搜索之后,我发现match filenames to foldernames then move files是我需要的,但我不能修改我需要的答案,因为文件名模式。

我最初坚持但我认为https://pymotw.com/2/glob/可以在列表和https://linux.die.net/man/3/fnmatch上做一些技巧吗?

1 个答案:

答案 0 :(得分:0)

我已经解决了我的问题。

from glob import glob
import logging, time, os

def listdirs(path):
    return [d for d in os.listdir(path) if os.path.isdir(d)]

def find_pics():
    folders = listdirs(".")
    for dir in folders:
        time.sleep(0.3)
        pics = os.listdir(dir)
        for pic in pics:
            if pic.endswith(".jpg"):
                if dir not in pic:
                    logging.warning(dir + ' / ' + pic)
                else:
                    pass
            else:
                pass
    return

def main():
    logging.basicConfig(filename='wrong_placed.log', filemode='w', level=logging.INFO, format='%(asctime)s [%(levelname)s] %(message)s \n')
    logging.debug("Starting to check is the picture wrong placed.")
    find_pics()
    return

if __name__ == '__main__':
    main()