首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mac终端上的Python :9

Mac终端上的Python :9
EN

Stack Overflow用户
提问于 2020-06-20 19:26:40
回答 1查看 1.2K关注 0票数 0

我用Python编写了以下程序(处理一个1000字的文本文件并查找所有4个单词的排列),并在Mac终端上运行它:

代码语言:javascript
运行
复制
from itertools import permutations

with open('wordlist.txt') as f:
    content = f.readlines()
content = [x.rstrip() for x in content] 

g = open("finalwordlist.txt", "a")

g.write('%s' % "\n".join(map("".join, permutations(content,4))))

过了一会儿,我从终端得到了以下输出:

代码语言:javascript
运行
复制
Killed: 9

没有将输出写入输出文本文件,因此我假设程序在写()步骤之前终止。

当我发现小于4(例如)的排列时,这个程序起了作用。1,2,3)。死者:9是因为所有排列的大小吗?或者和Mac终端环境有关?

我怎样才能避免这个错误呢?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-06-20 19:41:17

让我们看看..。您已经生成了一个Python对象,每个对象大约有1000^4个排列,每个排列有4个单词。平均用词长度约为4.5个字母,但一个词汇的平均长度更长--我会尝试一下,每个排列超过25个字符。这将给出对象中的2.5 * 10^13字节。

您的RAM分配如何处理一个250 of的字符串?如果你忘记了你的记忆限制,错误信息是什么?

是的,这是Mac环境的一个问题: SegFault不是错误消息。您的系统似乎崩溃得如此严重,以至于它再也没有回过头来发出Python内存错误。

顺便说一下,修复是“明显的”我希望,输出差异化中没有什么需要块写的。相反,一次只写一个。

代码语言:javascript
运行
复制
for combo in permutations(content,4):
    g.write("".join(combo) + "\n")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62490664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档