我试图按照每月的顺序保存我的csv文件,如may、jun等,并试图用python更改顺序,但无法做到这一点
我的csv文件名是jun01.csv、jun02.csv、jun03.csv、may03.csv和may04.csv
代码低于
import collections
import os
path = r'Stocks'
all_files = os.listdir(path)
filenames = []
for filename in all_files:
if filename.endswith(".csv"):
filenames.append(filename)
y = [z[:3] for z in filenames]
def lst(string):
str1 = " "
return str1.join(y)
print(lst(y))
------------------------------
Output is :
jun jun jun jun may may may may may may may may may may may may may may may may may may may may
------------------------------
# Code Continued
def rearrange(seq, order, keyfunc):
if not isinstance(order, collections.Mapping):
order = {v: i for i, v in enumerate(order)}
return sorted(seq, key=lambda x: order[keyfunc(x)])
if __name__ == '__main__':
filenames = lst(y).split()
months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul',
'aug', 'sep', 'oct', 'nov', 'dec']
def get_month_name(filename):
return filename.split(' ')
for filename in rearrange(filenames, months, get_month_name):
print(filename)
它抛出的错误类似于:
File "C:month_sort.py", line 43, in <module>
for filename in rearrange(filenames, months, get_month_name):
File "C:month_sort.py", line 27, in rearrange
return sorted(seq, key=lambda x: order[keyfunc(x)])
File "C:month_sort.py", line 27, in <lambda>
return sorted(seq, key=lambda x: order[keyfunc(x)])
TypeError: unhashable type: 'list'
我不知道这是否是你想要的,但它会根据月份对文件进行排序:
def rearrange(seq, order, keyfunc):
if not isinstance(order, collections.Mapping):
order = {v: i for i, v in enumerate(order)}
return sorted(seq, key=lambda x: order[keyfunc(x)])
if __name__ == '__main__':
months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul',
'aug', 'sep', 'oct', 'nov', 'dec']
def get_month_name(filename):
return filename[:3]
for filename in rearrange(filenames, months, get_month_name):
print(filename)
告诉我你是否希望发生其他事情
get_month_name
函数正在返回一个列表。尝试将其更改为:
def get_month_name(filename):
return filename.split(' ')[0]
这应该在代码的其余部分不变的情况下工作。