使用python读取php文件的输出

时间:2016-06-30 07:16:20

标签: python subprocess

我在服务器上有一个php文件,以mysql格式打印json数据库中的一些数据。

当我在浏览器中运行php文件时,我可以看到json数组。现在我想在json文件中获取python数组。有办法吗?

这是我正在使用的代码

import subprocess
import json
import codecs

proc = subprocess.Popen("http://www.rpi-connect.esy.es/getappliances?room=1", shell=True, stdout=subprocess.PIPE)
script_response = str(proc.stdout.read().decode('utf8'))
print(script_response)

3 个答案:

答案 0 :(得分:1)

我在尝试了很多不同的python库之后终于得到了答案

import json
import urllib.request
url = "http://example.com/your-filename.php"
x = urllib.request.urlopen(url)
raw_data = x.read()
encoding = x.info().get_content_charset('utf8')  # JSON default
print(raw_data)   #this is data in string format
data = json.loads(raw_data.decode(encoding))
print(data)   #this would be your json data

这适用于python 3.4。 for python 2.7尝试使用json.load()而不是json.loads()

答案 1 :(得分:0)

使用以下命令运行代码并将其标准输出存储到变量:

import subprocess

proc = subprocess.Popen("php /path/to/your/script.php", shell=True, stdout=subprocess.PIPE)
script_response = proc.stdout.read()

如果你在python中也需要json中的数据:

import json
data = json.loads(script_response)

答案 2 :(得分:0)

您可以通过让PHP脚本将JSON输出到服务器上的文件来实现此目的,然后让您的python脚本从文件中读取该JSON。

你可以这样做:

PHP脚本:

<?php
$json = json_encode('your data');
$file = '/tmp/json-file';

file_put_contents($file, $json);

Python脚本:

import json

with open('/tmp/json-file') as data_file:    
    data = json.load(data_file)

    # do whatever you need to do with data here