2

我需要创建一个这样的列表: 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']

我应该在我的块中修改什么?谢谢!

编辑

如果我想让 的第一个元素为myindexstring怎么办?所以要有myindex=['','event 1','event 2',...,'event n']

4

3 回答 3

3

enumerate接受第二个参数,即开始的数字。使用1. 然后使用glob只计算 csv 文件:

for i,v in enumerate(glob.glob('*.csv'),1):
于 2015-11-10T15:03:27.933 回答
2

使用genex 过滤文件名。

enumerate((x for os.listdir(directoryPath) if x.endswith(".csv")), start=1)

或者让操作系统来做。

enumerate(glob.glob(os.path.join(directoryPath, "*.csv")), start=1)
于 2015-11-10T15:03:22.290 回答
1

您需要一个计数器而不是使用 enumerate 因为每个循环都会增加

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))
于 2015-11-10T15:01:48.217 回答