Python:如何根据给定文件夹的内容创建名称列表?

时间:2015-11-10 14:58:35

标签: python list csv append listdir

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

3 个答案:

答案 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))