2015-06-01 19 views
-1

我有一個問題語句:如何將文件拆分爲Python 3中的輸出文件數量?

splitfile(文件名,NUMBEROFFILES)

的13行,分割在3,將具有長度爲4,4和5的輸出文件的文件,如果他們不能均勻分佈。 (不能有差別大於1行,如果他們不能均勻分佈)

我開始學習Python和我必須創建一個將文件分割成作爲參數中指定較小的一個功能。

我遇到的問題是我不知道如何處理這種情況,因爲它是基於文件數量以及不允許大於1的差異的概念。

+5

Hello Reks,歡迎來到Stack Overflow。請考慮花時間閱讀[關於]頁面和[問] - 因爲它代表您的問題只是一個問題陳述,並沒有顯示您面臨的具體問題。要求寫*你所有的代碼*不適合作爲一個問題。展示你試圖解決你的問題,並清楚描述你面對的具體問題。 – TZHX

+0

查看os.stat()獲取文件大小和file.readlines([sizehint])。這些是用於閱讀爲該計劃提供的各種信息。我認爲你知道如何寫作部分 – therealprashant

+0

問題陳述有一些笨拙的措辭。括號中的最後一部分僅僅是說如果你將你的總行數(從文件中)分成x組數。如果任何組之間的大小差異超過1,那麼你的線條沒有被平分。 –

回答

0

問題的本質(據我所知)是如何確定每個輸出文件將包含的行數。這是我想出了爲Python 3.4.3:導致

file 0 will contain 4 line(s) 
file 1 will contain 4 line(s) 
file 2 will contain 5 line(s) 

def get_line_counts(total_lines, number_of_files): 
    base_size = total_lines // number_of_files 
    line_count_list = [base_size for i in range(number_of_files)] 
    files_with_an_extra_line = total_lines % number_of_files 
    for i in range(files_with_an_extra_line): 
     line_count_list[len(line_count_list) - (i + 1)] += 1 
    return line_count_list 


for i, n in enumerate(get_line_counts(13, 3)): 
    print("file {0} will contain {1} line(s)".format(i, n)) 

的代碼的其餘部分也只是基本的文件I/O:讀ñ從線輸入文本文件並將它們寫入輸出文本文件。

+0

感謝它幫助了很多! –

相關問題