您可以使用以下代码导入 CSVKit JSON 类:
from csvkit.utilities.csvjson import CSVJSON
CSVKit 类有 2 个构造函数选项;第一个是命令行参数列表,第二个是输出流。如果未提供输出流,它将打印到标准输出。
argparser 模块用于解析命令行参数,因此它的文档会很有帮助。简短的版本就像将您在实际命令行中使用的原始参数字符串用空格分开一样。例如:
$ 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 对象替换为您的内存版本。唯一的规定是对象的行为必须像输入文件。假设您在名为input_string的变量中有 CSV 文件的字符串版本,您可以使用StringIO 库来创建字符串缓冲区:
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 不会为您关闭它。