2014-10-20 203 views
-2

我是新手Go lang程序員,試圖學習Go lang功能。我想在GO lang中將一個大的csv文件分成多個文件,每個文件都包含頭文件。我該如何做?我到處搜索,但無法得到正確的解決方案。在這方面的任何幫助將不勝感激。 也請給我推薦一本好書供參考。如何在GO lang中將大型csv文件分割成多個文件?

感謝你

回答

2

根據您的外殼福這個問題可能更適合於通用的shell工具,但你特別提到去。

讓我們來思考問題。

這個csv文件有多大?我們在說100線還是5G?

如果它的短小我通常使用這樣的:

http://golang.org/pkg/io/ioutil/#ReadFile

然而,這個包還存在:

http://golang.org/pkg/encoding/csv/

無論如何 - 讓我們回到問題的抽象。你有一個標題(這是第一行),然後是文檔的其餘部分。

所以我們可能想做的事情(如果忽略csv的話)是在我們的文件中讀取。

然後我們想分割文件正文中的所有換行符。

您可以使用該這樣做:

http://golang.org/pkg/strings/#Split

你沒有提到,但你知道你想要多少個文件拆分的還是寧願有行數或字節數分裂?這裏的實際限制是什麼?

通常它不會是文件數,但如果我們假裝它是我們只是想要我們的行數除以我們預期的文件數給行/文件。現在

我們可以採取適當大小的片,並通過文件寫回:

http://golang.org/pkg/io/ioutil/#WriteFile

我用一段時間來幫助招把我扔這些東西寫下來我們的使命。

「我要一個大的CSV文件分割成多個去文件」

然後,我開始打破了成片,但拿分/治之的方法 - 不要試圖解決一個整個問題去 - 把它分解到你可以考慮的地方。

此外 - 使用僞代碼,直到你可以舒適地寫真正的代碼本身。有時候只需寫一個簡短的評論就可以了,因爲你認爲代碼應該流動,然後將代碼放到可以從那裏編碼和工作的最小部分。

順便說一句 - 許多golang。org軟件包有示例鏈接,您可以在瀏覽器中真正運行示例代碼並將其剪切/粘貼到您自己的本地環境中。

而且,我知道我會捕捉一些憎恨這個 - 但對書籍 - IMO - 你會只是試圖把事情的工作,而不是從閱讀中學習速度快了很多。行動總是勝過被動。不要害怕失敗。

+0

請記住,CSV可以在列中包含換行符。:) – 2015-08-07 01:45:03

相關問題