我是python编码的新手,所以任何建议都会有所帮助!我必须创建一个函数,将所有csv文件放在一个目录中,并按其各列进行排序。每个csv文件必须按第一列(日期)排序,然后按第二列(时间)排序,然后按第三列(活动)排序。
我对数据进行了排序,但它将所有文件合并在一起。如何将文件彼此分开?
import glob
data=[]
path="/Users/sara/Desktop/*.csv"
files=glob.glob(path)
for file in files:
f=open(file, "r")
for line in f:
data.append(line)
data=sorted(data, key=lambda x:(x[0],x[1],x[2]))
print(sorted(data))
答案 0 :(得分:1)
好吧所以你似乎将每个文件中的信息附加到同一个列表中,我建议你做一个列表列表如下
import glob
data=[]
path="/Users/sara/Desktop/*.csv"
files=glob.glob(path)
sorted_files = []
for file in files:
f=open(file, "r")
for line in f:
data.append(line)
data=sorted(data, key=lambda x:(x[0],x[1],x[2]))
sorted_files.append(data)
for sorted_file in sorted_files:
print(sorted(sorted_file))
因此,每当文件被完全读取并排序时,它会将该列表附加到列表sorted_files
,以便打印出单独排序的每个文件,您可以像这样访问,sorted_files[0]
这会给你第一个排序文件
答案 1 :(得分:0)
使用dict存储已排序的列表,
import csv
import operator
import glob
data = dict() # filename : lists
path="/Users/sara/Desktop/*.csv"
files=glob.glob(path)
for filename in files:
# process each file
with open(filename, 'r') as f:
# read file to a list of lists
lists = [row for row in csv.reader(f, delimiter=',')]
# sort and save into a dict
data[filename] = sorted(lists, operator.itemgetter(0, 1, 2))
现在您可以获取给定文件名的排序列表
lists = data[filename]