繁体   English   中英

我正在尝试编写Python脚本以在目录中打印文件列表

[英]I am trying to write a Python Script to Print a list of Files In Directory

正如标题所暗示的那样,我正在寻找一个脚本,该脚本将允许我将目录中的文件名列表打印到CSV文件中。

我的桌面上有一个文件夹,其中包含大约150个pdf。 我希望能够将文件名打印到csv。

我是Python的新手,可能会从煎锅中跳出来,并在此项目中大火。

谁能提供一些见识使我入门?

首先,您将首先要获取目录中的所有文件,然后只需将它们写入文件即可。

from os import listdir
from os.path import isfile, join
import csv

onlyfiles = [f for f in listdir("./") if isfile(join("./", f))]

with open('file_name.csv', 'w') as print_to:
    writer = csv.writer(print_to)
    writer.writerow(onlyfiles)

请注意

第5行上的"./"是您要从中获取文件的目录。

请将'file_name.csv'替换为您也要'file_name.csv'的文件名。

import os
csvpath = "csvfile.csv"
dirpath = "."
f = open("csvpath, "wb")
f.write(",".join(os.listdir(dirpath)))
f.close()

可以进行改进,以所需的方式显示文件名,例如将其取回。 例如,这很可能不会包含UTF-8格式的unicode文件名,但是会使编码有些混乱,但是很容易解决所有问题。

如果您的dir非常大,并且包含许多文件,则可能需要等待一段时间才能让os.listdir()获得所有文件。 也可以使用其他方法代替os.listdir()来解决此问题。

要区分文件和子目录,请参阅Michael的答案。

另外,如果需要,可以使用os.path.isfile()或os.path.isdir()递归获取所有子目录。

像这样:

def getall (path):
    files = []
    for x in os.listdir(path):
        x = os.path.join(path, x)
        if os.path.isdir(x): files += getall(x)
        else: files.append(x)
    return files

以下将创建包含所有* .pdf文件的csv文件:

from glob import glob
with open('/tmp/filelist.csv', 'w') as fout:
    # write the csv header -- optional
    fout.write("filename\n")
    # write each filename with a newline characer
    fout.writelines(['%s\n' % fn for fn in glob('/path/to/*.pdf')])

glob()是使用listdir的不错快捷方式,因为它支持通配符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM