我正试图将一个大的xml文件分割成更小的块。我写输出文件,然后检查它的大小,看它是否超过了阈值,但我认为getsize()方法没有按预期工作。
有什么好的方法可以获得正在改变大小的文件的文件大小。
我做了这样的事。。。
import string
import os
f1 = open('VSERVICE.xml', 'r')
f2 = open('split.xml', 'w')
for line in f1:
if str(line) == '</Service>\n':
break
else:
f2.write(line)
size = os.path.getsize('split.xml')
print('size = ' + str(size))
运行此命令将0作为文件大小打印大约80次迭代,然后打印4176次。Python是否在实际输出输出输出之前将输出存储在缓冲区中?
是否尝试将os.path.getsize替换为os.tell,如下所示:
文件大小与文件位置不同。例如
它准确地返回以字节为单位的文件大小。
但是
这里f.tell()返回文件处理程序的当前位置,即下一次写入将把数据放在哪里。因为它知道缓冲,所以只要简单地追加到输出文件,它就应该是准确的。
是的,Python正在缓冲您的输出。你最好自己跟踪尺寸,比如:
(这可能不是100%准确的,例如在Windows上,由于
\r\n
行分隔符,每行将获得一个字节,但对于简单的分块来说应该足够了。)相关问题 更多 >
编程相关推荐