Python 在读取和打印简单文件时冻结
Python freezes on simple file read and print
我对一段非常简单的代码有疑问。我有一个 6551 行 (ASCII) 的文件,到目前为止我所做的就是读取文件并打印它。
a_file = open(myfile_path).readlines()
print a_file
在尝试打印时,解释器完全卡住了几分钟。
我在闲置和 jetbrains pycharm 中都尝试过这个。我正在运行 windows 服务器 2012 作为我的工作工作站和 windows 7 在家里 - 有趣的是,这在较弱的 windows 7 机器回家(q9550 和 8gb ram)上运行完美 -但我(和 it 家伙)都无法在我的工作站上找到解决方案(x99 上的 i7、64gb ram、gtx980)。
感谢所有帮助。
将文件读入内存并不是一个好主意(这就是您所做的),因为您可能会遇到遇到的问题。
如果要打印文件的每一行,可以使用以下结构:
with open(myfile_path) as input_file:
for line in input_file:
print line
对于更复杂的操作,您(或 IT 人员)应该更好地解决 the documentation for open() method 和文件操作。
首先,试试这个:
import sys
with open(myfile_path) as f:
for line in f:
print f
sys.stdout.flush()
可能有多种原因导致脚本挂起,例如文件被打开或锁定或输出阻塞。这将导致所有可以打印的东西都打印出来。
此外,通常一次一行地做事是有益的,除非您实际上同时需要列表中的所有行这不应该是这里的根本原因,除非行的长度真的很长,但它是不分配巨型数据结构的好风格。
此外,在文件上设置非阻塞模式将解决诸如文件被写入和锁定之类的问题(尽管这不会为您提供稳定的解决方案但它会在读取时停止阻塞)。这是 OS 依赖性,可能对您的帮助大于伤害。
如果问题是正在写入文件(我在 Windows 中经常遇到这种情况),另一种选择是将正在写入的文件复制到一个临时文件中并交给它复制到脚本。
您选择做什么在很大程度上取决于您是要确保拥有所有可能的数据还是要确保脚本立即运行。
我对一段非常简单的代码有疑问。我有一个 6551 行 (ASCII) 的文件,到目前为止我所做的就是读取文件并打印它。
a_file = open(myfile_path).readlines()
print a_file
在尝试打印时,解释器完全卡住了几分钟。 我在闲置和 jetbrains pycharm 中都尝试过这个。我正在运行 windows 服务器 2012 作为我的工作工作站和 windows 7 在家里 - 有趣的是,这在较弱的 windows 7 机器回家(q9550 和 8gb ram)上运行完美 -但我(和 it 家伙)都无法在我的工作站上找到解决方案(x99 上的 i7、64gb ram、gtx980)。
感谢所有帮助。
将文件读入内存并不是一个好主意(这就是您所做的),因为您可能会遇到遇到的问题。
如果要打印文件的每一行,可以使用以下结构:
with open(myfile_path) as input_file:
for line in input_file:
print line
对于更复杂的操作,您(或 IT 人员)应该更好地解决 the documentation for open() method 和文件操作。
首先,试试这个:
import sys
with open(myfile_path) as f:
for line in f:
print f
sys.stdout.flush()
可能有多种原因导致脚本挂起,例如文件被打开或锁定或输出阻塞。这将导致所有可以打印的东西都打印出来。
此外,通常一次一行地做事是有益的,除非您实际上同时需要列表中的所有行这不应该是这里的根本原因,除非行的长度真的很长,但它是不分配巨型数据结构的好风格。
此外,在文件上设置非阻塞模式将解决诸如文件被写入和锁定之类的问题(尽管这不会为您提供稳定的解决方案但它会在读取时停止阻塞)。这是 OS 依赖性,可能对您的帮助大于伤害。
如果问题是正在写入文件(我在 Windows 中经常遇到这种情况),另一种选择是将正在写入的文件复制到一个临时文件中并交给它复制到脚本。
您选择做什么在很大程度上取决于您是要确保拥有所有可能的数据还是要确保脚本立即运行。