Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:将列表写入文本文件&;文本文件大小限制_Python_List - Fatal编程技术网

Python:将列表写入文本文件&;文本文件大小限制

Python:将列表写入文本文件&;文本文件大小限制,python,list,Python,List,抱歉,对问题定义的冗长描述 我是python新手。大约一个月前开始学习。 今天我想把一个列表写进一个文本文件。 虽然我在这个网站上得到了答案,并使用了相同的方法。而且效果很好。 但是我在将列表写入文本文件时遇到了另一个问题 我名单的长度是2372。当我以我所需的特定格式将列表写入文本文件时,我发现只写入了少数列表成员。 (格式为:第一行中的前四个列表成员。同样,其余行中的一组4个列表成员。) 我发现只有1938名列表成员被写入文本文件。 发现文件大小为25KB 我还尝试在新行中写入每个列表成员,

抱歉,对问题定义的冗长描述

我是python新手。大约一个月前开始学习。 今天我想把一个列表写进一个文本文件。 虽然我在这个网站上得到了答案,并使用了相同的方法。而且效果很好。 但是我在将列表写入文本文件时遇到了另一个问题

我名单的长度是2372。当我以我所需的特定格式将列表写入文本文件时,我发现只写入了少数列表成员。 (格式为:第一行中的前四个列表成员。同样,其余行中的一组4个列表成员。) 我发现只有1938名列表成员被写入文本文件。 发现文件大小为25KB

我还尝试在新行中写入每个列表成员,然后发现文本文件的大小为25KB,与上述情况相比,这次写入的列表成员更少

写入列表的文本文件是否有文件大小限制? 请帮我解决这个问题

**python代码片段**

Lenlist = 2372

filptr = open(tempfile, 'w+')
count=0
for x in range(0,Lenlist):
  filptr.write("%s\t" % line[x])
  count+=1
  if count>3:
   if (count%4==0):
     filptr.write("\n")

在列表中使用迭代将更容易:

with open(tempfile, 'w+') as filptr:
    for count, l in enumerate(line):
        filptr.write("%s\t" % l)
        if count and count % 4 == 0:
             filptr.write("\n")
使用
with
语句可确保循环完成时文件正确关闭。使用
枚举
让我们不必使用手动计数器

请注意,现在您的行的末尾总是有一个
\t
额外选项卡。您可以使用一个技巧,一次从列表中抓取4个项目,并将它们与一个
'\t'.join()一起写入:

在这里,我使用
izip_longest
从列表中提取一个项目,每次迭代4次,直到原始列表用尽为止。为了确保无论列表的长度如何,末尾都有4项,我们使用空字符串作为填充:

>>> line = [1, 2, 3, 4, 5]
>>> for four in izip_longest(*([iter(line)] * 4), fillvalue=''):
...     print four
... 
(1, 2, 3, 4)
(5, '', '', '')

类似这样,使用发电机:

lis=[1,2,3,,,,,]  #your list
with open(filename,'w') as f:
    for y in (lis[x:x+4] for x in range(0,len(lis),4):
       f.write("%s\n",y)
作为:


问题是,文件写入是缓冲的,因此不会立即写入磁盘。如果您在不关闭文件的情况下退出,它们可能根本就不会被写入(尤其是在Jython和Pypy中,由于缺少确定性GC,因此存在问题)


如果您拥有Python2.6或更高版本,则可以使用
with
语句在完成后自动关闭文件。

您是否有相应的
filptr.close()
?最大文件大小由您的操作系统决定,但您不太可能在不允许文件大于25K的文件系统上安装Python;“这是不可能的。”prasanna21——那可能是你的问题。你需要
close()
一个文件来保证它被适当地刷新(或者,最好使用上下文管理器(
语句))。@mgilson:U绝对正确。使用close()语句后,将使用所有列表成员写入文本文件。从下一次开始,我在使用文件处理程序时要小心。谢谢。为什么不在使用时使用
enumerate
?我确实还在使用。:-)另外,请小心使用
l
作为变量名。人们会开始对你引用
PEP-8
:)并且每行都有一个尾随\t,不确定这是否重要,正如OP所说的那样too@jterrace:提供了一个取消额外选项卡的选项。
lis=[1,2,3,,,,,]  #your list
with open(filename,'w') as f:
    for y in (lis[x:x+4] for x in range(0,len(lis),4):
       f.write("%s\n",y)
In [34]: lis=range(20)

In [35]: [lis[x:x+4] for x in range(0,len(lis),4)]
Out[35]: 
[[0, 1, 2, 3],
 [4, 5, 6, 7],
 [8, 9, 10, 11],
 [12, 13, 14, 15],
 [16, 17, 18, 19]]