2016-05-12 232 views
-1

我對Python編碼非常陌生,所以任何建議都會有所幫助!我必須創建一個函數,將所有csv文件放在一個目錄中,並按其各自的列進行排序。每個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

請發表您的代碼作爲文本,否則我不能被搜索引擎讀取和其他用戶 –

+0

要附加複製每個文件的每一行都放在同一個列表中,所以我希望它能對所有文件的所有行進行排序,但是你希望它做什麼不同? –

+0

我希望文件分別留在自己的內部。所以我想將每個文件的每一行附加到他們自己的列表中。因此,如果我在目錄中有三個文件,我最終會得到三個排序列表 – classact

回答

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]這將給你的第一個整理文件

0

使用字典來存儲你的排序名單,

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] 
相關問題