Python:如何根据给定文件夹的内容创建名称列表?
Posted
技术标签:
【中文标题】Python:如何根据给定文件夹的内容创建名称列表?【英文标题】:Python: how to create a list with names based on the content of a given folder? 【发布时间】:2016-02-11 12:06:01 【问题描述】:我需要创建一个这样的列表:
myindex=['event 1','event 2','event 3', ..., 'event n']
,其中n
是我在给定目录中拥有的csv
文件的数量。
为了实现这一点,我写了以下内容:
directoryPath=raw_input('Directory for csv files: ')
myindex=[] #'event 1','event 2','event 3','event 4','event 5','event 6'
for i,file in enumerate(os.listdir(directoryPath)):
if file.endswith(".csv"):
myindex.append('event '+str(i))
我传递的目录有n
csv
文件和n
jpg
文件,但我只想考虑前者。
我得到的结果:
myindex=['event 0','event 2', 'event 4', ..., 'event 2(n-1)']
.
我想要的结果:
myindex=['event 1', 'event 2', 'event 3', 'event 4', ..., 'event n']
我应该在我的块中修改什么?谢谢!
编辑
如果我想让myindex
的第一个元素为空string
怎么办?所以要有myindex=['','event 1','event 2',...,'event n']
。
【问题讨论】:
每次读取一个csv文件都需要创建一个计数器变量并增加。 【参考方案1】:enumerate
采用第二个参数,即开头的数字。使用1
。然后使用glob
只统计csv文件:
for i,v in enumerate(glob.glob('*.csv'),1):
【讨论】:
【参考方案2】:使用genex过滤文件名。
enumerate((x for os.listdir(directoryPath) if x.endswith(".csv")), start=1)
或者让操作系统来做。
enumerate(glob.glob(os.path.join(directoryPath, "*.csv")), start=1)
【讨论】:
【参考方案3】:您需要一个计数器而不是使用枚举,因为它会随着每个循环递增
directoryPath=raw_input('Directory for csv files: ')
myindex=[''] #'event 1','event 2','event 3','event 4','event 5','event 6'
count = 0
for file in os.listdir(directoryPath):
if file.endswith(".csv"):
count += 1
myindex.append('event '+str(count))
【讨论】:
@FrancescoCastellani 只需将其添加到列表的初始化中即可。如果它基于一个条件,那么你可以使用myindex.insert(0,'')
以上是关于Python:如何根据给定文件夹的内容创建名称列表?的主要内容,如果未能解决你的问题,请参考以下文章
如何根据sqlite数据库中的名称从drawable中获取图像,然后在列表视图中显示
powershell 这将遍历目录中的文件列表,解析文件的名称,并根据解析的名称创建新文件。氏
如何编写 python 单行代码来创建文件中所有单词的列表? [复制]