我正在尝试将大型.txt文件全部读取到内存中(一次一个),以随机选择行,直到满足特定条件为止。我不能使用readlines()
或linecache.getline()
或类似名称,因为文件的行由\n\n
而不是\n
分隔。 (在\n
上拆分会导致奇怪的半句,等等。)理想情况下,我也不想将数据拆分为多个块,以避免从文件的特定部分进行过采样。目前,当我尝试将文件加载到内存中并使用read().split('\n\n')
沿着文件的分隔符分开时,程序会因
OSError:[Errno 22]无效的参数
我是不是很幸运,还是有解决方法? RAM不是问题。
编辑:我刚刚尝试使用Python 2.7.10和相同的read().split('\n\n')
将文件加载到内存中,但工作正常,没有错误。所以我想我的问题应该更具体:Python 3+是否有解决方法?
EDIT2,根据Ivan的坚持:您可以使用以下代码复制我的问题
with open('file_larger_than_2gb.txt', 'r') as f:
source = f.read().split('\n\n')
在Python 2上运行良好,并在Python 3上触发OSError
答案 0 :(得分:1)
此问题是由macOS 10.13.6 Beta中的一个错误引起的。该问题已在2018年7月10日发布的完整版本10.13.6中得到解决。