您可以使用下面的代碼導入CSVKit JSON類:
from csvkit.utilities.csvjson import CSVJSON
的CSVKit類取2個構造選項;第一個是命令行參數列表,第二個是輸出流。如果未提供輸出流,則會打印到標準輸出。
argparser模塊用於解析命令行參數,因此it's documentation將會有所幫助。簡短的版本就是,它就像將你在實際命令行中使用的參數的原始字符串拆分爲空格一樣。例如:
$ csvjson --key Date /path/to/input/file
將轉化爲:
from csvkit.utilities.csvjson import CSVJSON
args = ["--key", "Date", "/path/to/input/file"]
CSVJSON(args).main()
如果你不想從輸入文件中讀取,但不能輸入文件在命令行傳遞到標準輸入,您可以用您的內存版本替換sys.stdin對象。唯一的規定是該對象必須像輸入文件一樣行爲。假設你有CSV文件的字符串版本在一個名爲變量input_string,則可以使用StringIO library創建一個字符串緩衝區:
import StringIO
import sys
new_stdin = StringIO.StringIO(input_string)
sys.stdin = new_stdin
args = ["--key", "Date"]
CSVJSON(args).main()
最後,如果你要打印到文件,而不是標準輸出,通過一個打開的文件對象作爲第二個參數:
output_file = open("/path/to/output.txt", "w")
CSVJSON(args, output_file).main()
output_file.close()
記住,直到關閉該文件對象自己也不會刷新緩衝區; CSVJSON不會爲你關閉它。
嗨,我只看到這個。哈哈。我沒有嘗試過,但是閱讀你的解釋看起來是完全有效的。謝謝! – 2014-03-11 01:02:42