用 Python 替换 JSON 文件中的字符。由于大文件(超过 1 GB)而导致编辑问题

我创建了一个小脚本来比较两个图像的相似程度。这包含在一个名为 的文件中compare_image.py,该文件仅包含一个函数compare. 该文件位于应用程序目录中。我正在尝试models.py使用该行从文件中导入它import compare_image,但尝试此操作会导致出现错误消息ModuleNotFoundError: No module named 'compare_image'。


简化的目录结构如下所示:


myproject

└── myapp

    ├── __init__.py

    ├── admin.py

    ├── apps.py

    ├── compare_image.py

    ├── forms.py

    ├── models.py

    ├── tests.py

    ├── urls.py

    └── views.py

myapp是项目中唯一的应用程序。除此之外,webapp 运行良好。


我试图删除并重新touch荷兰国际集团的__init__.py文件都无济于事。我可以compare_image从myapp目录中的 python shell导入。唯一的导入compare_image.py是 PIL 或标准库,所以我不认为循环导入是罪魁祸首。


一种解决方案是将代码放入 中models.py,但我不想弄乱这个文件。


我想既然这个错误看起来很基本,那么 Django 中用户编写的脚本可能有一些标准机制,但我在网上找不到任何提及。


如果能让事情更清楚,我很乐意提供有关该项目的更多详细信息。在此先感谢您的帮助(这个错误让我发疯了!)


aluckdog
浏览 218回答 2
2回答

蛊毒传说

问题可能是a.readlines()因为它将整个文件带到您的记忆中。在处理大文件时,逐行读取它会更有趣,如下所示:with open(fname) as f:     for line in f:        # Do your magic here, on this loop# No need to close it, since the `with` will take care of that.如果您的目标是$用 a替换 each \n,它将是这样的:with open(fname, "r+") as f:     for line in f:        line.replace("$", "\n")

慕田峪4524236

为了能够处理可能的$字符的字符串中的JSON对象,你可以拆分输入字符串data1与$成片段,由一个加盟片段转换成字符串一个,直到它可解析为JSON,点你输出该串并清楚地继续下一个片段:import jsoncandidate = ''for fragment in data1.split('$'):    candidate += fragment    try:        json.loads(candidate)        print(candidate)        candidate = ''    except json.decoder.JSONDecodeError:        candidate += '$'        continuedata1 = '''{}${"a":"$"}${"b":{"c":2}}'''例如,给定,这输出:{}{"a":"$"}{"b":{"c":2}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python