我有一个python脚本,我希望使用exec()函数从PHP运行。 Python脚本的作用是从Web API获取一些数据,将数据存储在临时文件中,然后读取文件并将一些数据放入csv文件中。当我单独测试时,脚本运行正常。现在,我想通过exec()运行它。当我第一次尝试时,我认为该脚本根本没有运行,但后来我看起来更进一步,并意识到脚本实际上正在运行,但在执行期间停在某处。
然后我尝试将输出重定向到带有> output.txt
的txt文件,以查看它出错的地方。当我检查文件并调试一下时,我意识到问题是我的Python脚本中的函数json.load()
。奇怪的是,在output.txt
文件中,没有显示错误消息。
以下是output.txt
文件的样子。
这是包含json.load()
的python函数。
def get_json_files_data(path, min = 1):
json_files = find_files(path, "json", min)
json_data = dict()
print("===========================================")
print("= Converting JSON data into Python object =")
print("===========================================")
for file in json_files:
base = os.path.basename(file) # name with extension (ex. 'file.json')
id = os.path.splitext(base)[0] # name without extension (ex. 'file') in this case, the names are the trip ids
opened_file = open(file)
print(10)
json_data[id] = json.load(opened_file) # get the json data as a python dict
print(11)
return json_data
我还尝试将json文件的权限更改为777
,但这并不能解决问题。
有没有人有任何想法?如果需要更多代码,请告诉我。
非常感谢
答案 0 :(得分:0)
我终于成功了。如果有人想知道,这就是解决方案。
问题在于编码。根据我运行脚本的方式,它在某种程度上有所不同。我所做的只是用encoding='utf-8'
指定编码。这是我的代码现在的样子。
def get_json_files_data(path, min = 1):
json_files = find_files(path, "json", min)
json_data = dict()
print("===========================================")
print("= Converting JSON data into Python object =")
print("===========================================")
for file in json_files:
base = os.path.basename(file) # name with extension (ex. 'file.json')
id = os.path.splitext(base)[0] # name without extension (ex. 'file') in this case, the names are the trip ids
with open(file, 'r', encoding='utf-8') as opened_file:
json_data[id] = json.load(opened_file) # get the json data as a python dict
return json_data