我有一個腳本根據輸入數據輸出URL。每行輸入生成大約20個URL。然後使用此輸出上傳到Akamai Content Control。但是,Akamai的文件大小限制爲50KB。限制輸出文件的大小,並根據需要使用Ruby創建其他文件
我知道我可以寫一個URL然後檢查文件大小。如果文件大小破壞緩衝區,請關閉該文件並創建一個新文件並重復。
我最終很好奇,是否有一種更加優雅的方式來處理Ruby內部更少的開銷/代碼。
感謝
我有一個腳本根據輸入數據輸出URL。每行輸入生成大約20個URL。然後使用此輸出上傳到Akamai Content Control。但是,Akamai的文件大小限制爲50KB。限制輸出文件的大小,並根據需要使用Ruby創建其他文件
我知道我可以寫一個URL然後檢查文件大小。如果文件大小破壞緩衝區,請關閉該文件並創建一個新文件並重復。
我最終很好奇,是否有一種更加優雅的方式來處理Ruby內部更少的開銷/代碼。
感謝
寫的每一行檢查,如果文件大小+行大小是小於極限之前。寫入文件或相應地創建一個新文件。
index = 2;
f = File.new('output_file.txt', 'w')
while(there_is_new_output_to_write) do #get new line
if(f.size + output_line.size > LIMIT) do #if total size is too big
Fileutils.cp('output_file.txt','output_file' + index + '.txt') #copy
index = index + 1 #increment index for new file
f = File.new('output_file.txt', 'w') #override output file
end
f.puts(output_line) #write new line
end
#here You will have index -1 files
#that is if index is 4, then you will have output_file.txt, output_file2.txt, output_file3.txt,
#but NOT output_file4.txt!
或者,如果這不是一個問題,你可以使用一些好的歸檔工具在那裏拼接文件,大小爲50KB爲你。
我想過看看我是否可以使用Ruby的Logger創建文件,但它會放入一堆數據。我只需要一個URL,每行一個。 –
希望我的回答清楚如何處理ruby中的文件/文件大小。 –
爲什麼不在寫入前檢查文件大小和新行的總和? – sawa