如何列出csv文件中的目录

2024-07-01 07:20:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图列出目录名和文件名,mp4文件和空目录在一个csv。我得到了输出,但它打印了很多次。有什么帮助吗?提前谢谢

import csv
import os
import sys

with open('Files.csv', 'w', newline='') as f:
fieldnames = ['Foldername', 'Filename','mp4filelist','Empty folders']
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()

for dirpath, dirnames, files in os.walk(sys.argv[1]):
    for file_name in files:
        for root, dirs, files in os.walk(sys.argv[1]):
            for file in files:
                if(file.endswith(".mp4")):
    
                    listmp4 = (os.path.join(root,file))
  
                    listOfEmptyDirs = [dirpath for (dirpath, dirnames, filenames) in os.walk(sys.argv[1]) if len(dirnames) == 0 and len(filenames) == 0]
                   for elem in listOfEmptyDirs:

                       writer.writerow({'Foldername' : f'{dirpath}', 'Filename' : file_name, 'mp4filelist' : listmp4, 'Empty folders' : listOfEmptyDirs })

Tags: csvinimportforossysfilesfile
1条回答
网友
1楼 · 发布于 2024-07-01 07:20:08

在代码中,您在目录中迭代了两次,这就是您有多个条目的原因

仅供参考os.walk(sys.argv[1])递归解析该目录,因此您无需再次调用它

我从您的要求中得到的是,您需要mp4文件名和目录路径,一列用于mp4文件列表,另一列用于空目录列表,以便执行以下操作:

import csv
import os
import ctype


def has_hidden_attribute(filepath):
    try:
        attrs = ctypes.windll.kernel32.GetFileAttributesW(unicode(filepath))
        assert attrs != -1
        result = bool(attrs & 2)
    except (AttributeError, AssertionError):
        result = False
    return result

with open('Files.csv', 'w') as f:
    fieldnames = ['Foldername', 'Filename', 'mp4filelist', 'Empty folders']
    writer = csv.DictWriter(f, fieldnames=fieldnames)
    writer.writeheader()
    listOfEmptyDirs = []
    for dirpath, dirnames, files in os.walk(sys.argv[1]):
        print(dirpath, dirnames, files)
        listmp4 = [os.path.join(dirpath, file) for file in files if file.endswith(".mp4")]
        if len(dirnames) == 0 and len(files) == 0 and has_hidden_attribute(dirpath):
            listOfEmptyDirs.append(dirpath)
        for filename in files:
            writer.writerow({'Foldername': str(dirpath), 'Filename': filename, 'mp4filelist': listmp4,
                             'Empty folders': listOfEmptyDirs})

相关问题 更多 >

    热门问题