如何从python中的php文件中读取php数组

时间:2011-09-03 00:24:10

标签: python

假设我们想从php创建一个python配置阅读器。

的config.php

$arr = array(
    'a config',
    'b config',
    'c config => 'with values'
)

$arr2 = array(
    'a config',
    'b config',
    'c config => 'with values'
)

readconfig.py

f = open('config.php', 'r')
// somehow get the array then turns it into pythons arr1 and arr2

print arr1
# arr1 = {'a config', 'b config', 'c config': 'with values'}

print arr2
# arr2 = {'a config', 'b config', 'c config': 'with values'}

这在python中是可能的吗?

3 个答案:

答案 0 :(得分:8)

from subprocess import check_output
import json

config = check_output(['php', '-r', 'echo json_encode(include "config.php");'])
config = json.loads(config)

其中config.php返回一个数组:

return [
    'param1' => 'value1',
    'param2' => 'value2',
];

答案 1 :(得分:1)

  1. 使用PHP脚本解析配置

  2. 使用JSON将配置变量保存到文件

  3. 使用os.system()

  4. 从Pytson执行解析器
  5. 用Python阅读JSON文件

答案 2 :(得分:0)

作为Eugenes的变种:

在我的情况下,php文件只设置变量,它没有返回数组。

因此,我必须在json_encode之前执行include;然后,编码特定变量。这是为了读取ownCloud的version.php。见https://github.com/owncloud/core

E.g。

vFileName=configDict['ocDir']+'/version.php'
cmd=['/usr/bin/php','-r','include "'+vFileName+'"; echo json_encode(array($OC_Version,$OC_VersionString));']
ocVersion, ocVersionString=json.loads(subprocess.check_output(cmd))