我有一个 Python 脚本,它在带有 RHEL5 的服务器上运行。该服务器具有 32GB 内存和 8 个 2.83GHz 的 Intel Xeon CPU。我认为硬件资源应该没有问题,但是当我尝试上传和处理一个 1500 万行的文本文件时,程序给了我一个错误信息:
Traceback (most recent call last):
File "./test.py", line 511, in <module>
startup()
File "./test.py", line 249, in startup
cmdoutput = commands.getoutput(cmd_file)
File "/usr/local/lib/python2.6/commands.py", line 46, in getoutput
return getstatusoutput(cmd)[1]
File "/usr/local/lib/python2.6/commands.py", line 55, in getstatusoutput
pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')
OSError: [Errno 12] Cannot allocate memory
我调查了这个问题,并没有找到任何与我的问题完全匹配的答案。这些答案集中在“popen”子例程上,但我不使用这个例程。我只是使用“ commands.getoutput()
”来显示文档的文件类型。
需要注意的是,如果我尝试处理 1000 万行文本,则不会出现此问题。仅当文本文件很大时才会发生。任何人都可以在这个问题上帮助我吗?答案可能是比“ command.getoutput()
”更好的模块。谢谢!