![](/img/trans.png)
[英]I am simply trying to write a python script that will change the filename in a directory of files
[英]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.