当脚本在cgi-bin中时,如何将其他JSON附加到另一个JSON文件的末尾?

时间:2013-11-26 00:05:27

标签: python json cgi

我是Python新手,我正在尝试创建一个脚本,将JSON附加到预先存在的JSON文件的末尾。我的服务器运行的方式是它只在cgi-bin文件夹(public_html / cgi-bin)中执行Python文件夹。

我将JSON文件和Python脚本文件放在同一目录中,并尝试使用以下代码对其进行更改:

#!/usr/bin/env python

import cgi
import json

new_data = {"2": {"title": "what", "date": "tomorrow"}}

print("Content-type: application/json\n\r")

with open("jobs.json") as file:
    data = json.load(file)

data.update(new_data)

with open('jobs.json', 'w') as file:
    json.dump(data, file)

但是当我加载该页面时没有任何反应,jobs.json保持不变。

我和我的服务器提供商交谈,他们说cgi-bin中的JSON文件被认为只是在public_html中(如果我在我的地址栏中访问它们,它会发现它很好,而它不在cgi中) -bin目录)。然后,如果它显然回到public_html,我该如何访问users.json

Python文件的路径为/public_html/ooproject/two.pyjobs.json位于同一目录中。

1 个答案:

答案 0 :(得分:1)

您可以尝试__file__变量。它包含您的脚本名称,并与os.path结合使用可能会提供您想要的内容。试试这个:

#!/usr/bin/env python

import cgi
import json
import os.path

new_data = {"2": {"title": "what", "date": "tomorrow"}}

print("Content-type: application/json\n\r")

script_dir = os.path.dirname(os.path.abspath(__file__))
fname = os.path.join(script_dir, 'jobs.json')

with open(fname) as f:
    data = json.load(f)

data.update(new_data)

with open(fname, 'w') as f:
    json.dump(data, f)

注意:避免使用file作为变量名,因为它是Python类型的名称。