Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python csvkit&;django a.k.a.使用csvkit作为模块,而不是从命令行_Python_Django_Csv_Django Views - Fatal编程技术网

Python csvkit&;django a.k.a.使用csvkit作为模块,而不是从命令行

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才能使用它,这将是一个不错的奖

我需要在django应用程序中进行一些csv文件处理。
我听说了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不会为您关闭它。

嗨,我现在才看到这个。哈哈。我还没试过,但读了你的解释后,我觉得这完全行得通。谢谢