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

Python: how to create a list with names based on the content of a given folder?

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

我传给它的目录有ncsv个文件和njpg个文件,但我只想考虑前者

我得到的结果: 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'].

您需要一个计数器而不是使用枚举,因为它会在每个循环中递增

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

使用 genex 过滤文件名。

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

或者让 OS 去做。

enumerate(glob.glob(os.path.join(directoryPath, "*.csv")), start=1)

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

for i,v in enumerate(glob.glob('*.csv'),1):