我需要创建一个这样的列表:
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']
。
答案 0 :(得分:3)
enumerate
采用第二个参数,即开始的数字。使用1
。然后使用glob
仅计算csv文件:
for i,v in enumerate(glob.glob('*.csv'),1):
答案 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)
答案 2 :(得分:1)
您需要一个计数器而不是使用枚举,因为每个循环都会增加
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))