Python:将列表写入文本文件&文本文件大小limi

2024-06-28 19:13:23 发布

您现在位置: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")

Tags: 方法答案列表if定义网站格式count
3条回答

在列表中使用“迭代”会更容易:

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语句可确保在循环完成时正确关闭文件。使用enumerate让我们不必使用手动计数器。在

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

^{pr2}$

在这里,我使用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, '', '', '')

问题是文件写入是缓冲的,所以不能立即写入磁盘。如果在不关闭文件的情况下退出,则可能根本不会写入这些文件(尤其是在Jython和Pypy中,由于缺乏确定性GC而出现问题)。在

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

像这样,使用发电机:

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)

作为:

^{pr2}$

相关问题 更多 >