因此,我正在開發一個項目,在該項目中,我必須對一個大型的34mb文本文件進行排序,該文件充滿了歌曲數據。文本文件的每一行都有一年,唯一編號,藝術家和歌曲。我無法弄清楚的是如何有效地將數據分類到其他文本文件中。我想按藝術家名稱和歌曲名稱排序。可悲的是,這是我的全部:如何分類這些數據?
#Opening the file to read here
with open('tracks_per_year.txt', 'r',encoding='utf8') as in_file:
#Creating 'lists' to put information from array into
years=[]
uics=[]
artists=[]
songs=[]
#Filling up the 'lists'
for line in in_file:
year,uic,artist,song=line.split("<SEP>")
years.append(year)
uics.append(uic)
artists.append(artist)
songs.append(song)
print(year)
print(uic)
print(artist)
print(song)
#Sorting:
with open('artistsort.txt', 'w',encoding='utf8') as artist:
for x in range(1,515576):
if artists[x]==artists[x-1]:
artist.write (years[x])
artist.write(" ")
artist.write(uics[x])
artist.write(" ")
artist.write(artists[x])
artist.write(" ")
artist.write(songs[x])
artist.write("\n")
with open('Onehitwonders.txt','w',encoding='utf8') as ohw:
for x in range(1,515576):
if artists[x]!= artists[x-1]:
ohw.write (years[x])
ohw.write(" ")
ohw.write(uics[x])
ohw.write(" ")
ohw.write(artists[x])
ohw.write(" ")
ohw.write(songs[x])
ohw.write("\n")
請記住我是新手,所以請儘量把你的解釋深入淺出。如果你們有其他的想法,我也很樂意聽到他們的意見。謝謝!
你不應該使用'range'這一點。如果文件中的條目數量發生變化,將會破壞您的邏輯。你可以使用'爲藝術家排隊:'確保你總是遍歷每一行。 – IanAuld
@IanAuld感謝您的建議,但我在開始時就這麼做了。問題在於沒有任何文件以這種方式寫在artistsort.txt文件中,並且一個命中奇蹟文件變得太大(〜32mb)。 – Bobbert
這與'for'循環無關。在你之前的問題中,你的邏輯存在一個問題,它阻止了任何寫入該文件的內容。 for循環只是迭代你的數據,它是在它決定了你的數據實際發生了什麼後。 – IanAuld