python如何将数据写入具有不同调用的单个文件中

时间:2013-04-01 12:25:24

标签: php python http

我的网站上有一个python脚本和一个PHP页面。我必须创建一个csv文件并以下列方式将数据写入其中 -

PHP处理GET请求并通过shell_exec调用python脚本,将GET变量传递给它,是JSON格式。这里的脚本看起来像 -

...
$var_a = $_GET['a'];
$var_b = $_GET['b'];
$var_c = $_GET['c'];
$post_data = array('item' => 'get-list',
    'var a' => "$var_a",
    'var b' => "$var_b",
    'var c' => "$var_c"
    );
$json_data = json_encode($post_data);
$temp = shell_exec('python process_data.py "' . $json_data .'"');
echo $temp;
...

这个脚本很简单,它只是收集GET变量并形成它的JSON对象。现在,这些数据被传递给process_data.pyimport sys, json, time, csv json_data = json.dumps(sys.argv[1]) def scr(json_data): json_data = json_data count = 0 json_list = json_data.split(',') for i in json_list: count=count+1 if(count==5): lati = json_list[0].strip('{') longi = json_list[1] datestmp = json_list[2] timestmp = json_list[3] out = open('file.csv', 'w') out.write('%s;' % lati.split(':')[1]) out.write('\n') out.write('%s;' % longi.split(':')[1]) out.write('\n') out.write('%s;' % datestmp.split(':')[1]) out.write('\n') out.write('%s;' % timestmp.split(':',1)[1]) out.write('\n') out.close() print 'Latitude: ',lati.split(':')[1],', Longitude: ',longi.split(':')[1],', Datestamp: ',datestmp.split(':')[1],', Time: ', timestmp.split(':',1)[1] else: print 'Wrong data received' scr(json_data) 处理数据并将数据保存到csv文件中,其代码为 -

GET

所有事情都运作良好。处理并保存数据。 PHP脚本还将当前数据保存到数据库中。所以PHP做两个操作 - 1.将数据保存到数据库中 2.将数据传递给python脚本,将脚本文件保存为CSV文件。

然而,GET数据是以规则的时间间隔(比如1或2秒)发送的。因此,对这些间隔的Python文件调用是常规的。它必须每1-2秒打开一次CSV文件,然后在那里写入数据。这会减慢处理速度。

我希望CSV文件在数据到来之前保持打开状态,并在长时间未发出{{1}}请求时关闭它。有没有办法这样做?

0 个答案:

没有答案