我是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.py
,jobs.json
位于同一目录中。
答案 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类型的名称。