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))
我传给它的目录有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']
.
您需要一个计数器而不是使用枚举,因为它会在每个循环中递增
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):
我需要创建一个这样的列表:
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']
.
您需要一个计数器而不是使用枚举,因为它会在每个循环中递增
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):