Python csvkit&;django a.k.a.使用csvkit作为模块,而不是从命令行
我需要在django应用程序中进行一些csv文件处理。Python csvkit&;django a.k.a.使用csvkit作为模块,而不是从命令行,python,django,csv,django-views,Python,Django,Csv,Django Views,我需要在django应用程序中进行一些csv文件处理。 我听说了csvkit,它看起来很酷。 想尝试一下,但我不知道如何使用csvkit作为一个模块。具体来说,我想使用CSVJSON实用程序。我需要向它传递一个csv文件(希望还有一些其他参数),但我不太明白如何做到这一点。 我想通过实用程序上传一个csv文件,上传的文件可以在内存中(如果足够小)或在临时存储区域。CSVJSON看起来像是采用了文件路径或流。如果有人能告诉我需要对上传的文件做些什么,CSVJSON才能使用它,这将是一个不错的奖
我听说了csvkit,它看起来很酷。
想尝试一下,但我不知道如何使用csvkit作为一个模块。具体来说,我想使用CSVJSON实用程序。我需要向它传递一个csv文件(希望还有一些其他参数),但我不太明白如何做到这一点。
我想通过实用程序上传一个csv文件,上传的文件可以在内存中(如果足够小)或在临时存储区域。CSVJSON看起来像是采用了文件路径或流。如果有人能告诉我需要对上传的文件做些什么,CSVJSON才能使用它,这将是一个不错的奖励 在Django1.3中,我计划用form_有效的方法来完成这项工作 希望有一些python技能的人能帮我看看我需要做什么。
谢谢您可以使用以下代码导入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()
如果不想读取输入文件,但无法从命令行将输入文件传递到stdin,则可以使用内存中的版本替换sys.stdin对象。唯一的规定是对象的行为必须类似于输入文件。假定您在名为input_string的变量中有CSV文件的字符串版本,您可以使用创建字符串缓冲区:
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不会为您关闭它。嗨,我现在才看到这个。哈哈。我还没试过,但读了你的解释后,我觉得这完全行得通。谢谢