我的目标是生成一个CSV文件,其中列出项目名称和与之相关的文档。项目名称将是文件夹名称(e.x.Project1,Project2),文档将是位于文件夹中的文件。在
C:\SHH\Testenv
C:\SHH\Testenv\Project1
C:\SHH\Testenv\Project2
C:\SHH\Testenv\Project1\test.txt
C:\SHH\Testenv\Project1\test.ppt
C:\SHH\Testenv\Project2\payroll.ppt
import os
import xlwt
import csv
from os import walk
path = 'C:\SHH\Testenv'
folders = [] # list that will contain folder names (basicaly the project names)
pathf = [] # list that will contain the directory of each folder
files = [] # list of files in a folder (basically documents for each project)
for item in os.listdir(path):
if not os.path.isfile(os.path.join(path, item)):
folders.append(os.path.join(item))
pathf.append(os.path.join(path,item))
for x in pathf :
for (dirpath, dirnames, filenames) in walk(x):
files.extend(filenames)
print files
我被困在将每个文件关联到各自的文件夹,然后将其打印到CSV文件
提前谢谢你
^{} 和{a2}您是此任务的朋友:
或者,如果您更喜欢生成器表达式:
^{pr2}$结果:
编辑:输出未排序令我烦恼。以下是对项目进行排序的版本,每个项目中的文件都进行了排序:
结果:
在进入下一个项目/目录之前,完全处理一个项目/目录可能更容易。另外,字典似乎是最理想的结构。在
第一步是获取根目录,即项目(
os.path.isdir()
)。我们在dict中为项目创建一个条目,保存一个空列表。接下来,列出此项目目录中的所有文件并将其添加到列表中。因为你没有一个典型的csv结构,我只使用了普通的文件I/O。项目名称和文档用四个下划线分开,但是你可以很容易地调整它。在
试试看
还要注意}(此处用作
os.path.join()
(连接路径)和{",".join(...)
)之间的区别,后者用分隔符连接字符串序列,在本例中是逗号(,
)。在相关问题 更多 >
编程相关推荐