gpt4 book ai didi

python - 从 nodejs 运行 python 脚本并返回 json

转载 作者:搜寻专家 更新时间:2023-10-31 23:56:38 27 4
gpt4 key购买 nike

我正在使用 python-shell 运行 python 脚本。 python 脚本(名为 combine.py)以 json 格式返回数据。但是代码在我的本地机器上运行良好,但在 aws 实例上运行不正常。我在 pm2 日志中收到以下错误:

SyntaxError: Unexpected token / in JSON at position 0
1|app | at JSON.parse (<anonymous>)
1|app | at PythonShell.asJson (/home/ubuntu/toolCaseWebsite/node_modules/python-shell/index.js:358:21)
1|app | at /home/ubuntu/toolCaseWebsite/node_modules/python-shell/index.js:310:42
1|app | at Array.forEach (<anonymous>)
1|app | at PythonShell.recieveInternal (/home/ubuntu/toolCaseWebsite/node_modules/python-shell/index.js:306:15)
1|app | at PythonShell.receiveStderr (/home/ubuntu/toolCaseWebsite/node_modules/python-shell/index.js:290:21)
1|app | at Socket.<anonymous> (/home/ubuntu/toolCaseWebsite/node_modules/python-shell/index.js:108:18)
1|app | at Socket.emit (events.js:182:13)
1|app | at Socket.EventEmitter.emit (domain.js:442:20)
1|app | at addChunk (_stream_readable.js:279:12)

我已确保 python 脚本返回有效的 json 数据,方法是首先将数据放入文件中,然后通过在线 json 验证器检查该数据。

Nodejs(javascript 文件)

  var ps = require('python-shell')
noOfLines = 2
noOfClusters = 5
var options = {
mode: 'json',
pythonOptions: ['-u'], // get print results in real-time
scriptPath: './pythonScripts/',
args: [noOfClusters, noOfLines, processingData]
}

ps.PythonShell.run('combine2.py', options, function(err, results) {
if (err) throw err
// Results is an array consisting of messages collected during executio n
//console.log(results)

// Data send to index_timeline
res.render('index_timeline', {
results: results[0]
})

fs.writeFile('myOutput.txt', JSON.stringify(results, 0, 2), err => {
// throws an error, you could also catch it here
if (err) throw err

// success case, the file was saved
console.log('File saved!')
})
})

Python 脚本(combine.py)

if __name__ == "__main__":

# getting parameters
content = sys.argv[3]
nclusters= int(sys.argv[1])
noOfLines=int(sys.argv[2])


data={"clusters":[]}

# Data Cleaning and then splitting into sentences

sentences = dataCleaning(content).split('.')#splitting sentences on basis of comma rather fullstop
sentences = list(filter(None, sentences))

temp=list()
myDict=dict()
summarizing=str()

#getting clusters
clusters = cluster_sentences(sentences, nclusters)


for cluster in range(nclusters):
for i,sentence in enumerate(clusters[cluster]):
temp.append(sentences[sentence])
summarizing+=sentences[sentence]+". "
myDict["sentences"]=list(temp)
sentence_tokens, word_tokens = tokenize_content(summarizing)
sentence_ranks = score_tokens(word_tokens, sentence_tokens)
myDict["summary"]=str(summarize(sentence_ranks, sentence_tokens,noOfLines))
data["clusters"].append(dict(myDict))
myDict.clear()
del temp[:]
summarizing=''

print(json.dumps(data))

myOutput.txt(我在上面的txt文件中写的数据)

[
{
"clusters": [
{
"sentences": [
" Qoum &amp; Maa Baap K Duaon Se Award Haasil Kiya",
" Qoum &amp; Maa Baap K Duaon Se Award Haasil Kiya",
" Qoum &amp; Maa Baap K Duaon Se Award Haasil Kiya"
],
"summary": " Qoum &amp; Maa Baap K Duaon Se Award Haasil Kiya. Qoum &amp; Maa Baap K Duaon Se Award Haasil Kiya."
},
{
"sentences": [
" Mushtaq Ahmed",
" Mushtaq Ahmed",
" Mushtaq Ahmed NIJAMHAMY"
],
"summary": " Mushtaq Ahmed. Mushtaq Ahmed NIJAMHAMY."
}
]
}
]

最佳答案

如果一些非 JSON 内容被写入标准输出,python-shell 试图将其解析为 JSON,则可能会出现此错误。在 JSON 模式下,所有输出都应采用 JSON 编码,并使用回车符分隔消息。

尝试将您的 Python 代码作为独立脚本运行,并确保没有额外的输出(例如换行)。

很可能您的 Python 代码正在发送一个空行字符作为输出,该 Node 试图将其解析为 JSON.parse("/\n") 导致此错误。

Uncaught SyntaxError: Unexpected token / in JSON at position 0
at JSON.parse

关于python - 从 nodejs 运行 python 脚本并返回 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55684896/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com