1

我在处理具有大量数据的文件时遇到了一些问题。我需要跳过对这些文件执行一些操作。我将文件的数据放入一个变量中。现在我需要获取变量的字节,如果它大于 102400 ,则打印一条消息。

更新:我无法打开文件,因为它存在于 tar 文件中。内容已经被复制到一个名为“数据”的变量中,我能够打印变量数据的内容。我只需要检查它是否超过 102400 字节。

谢谢

4

5 回答 5

6
import os
length_in_bytes = os.stat('file.txt').st_size
if length_in_bytes > 102400:
   print 'Its a big file!'

更新以处理 tarfile 中的文件

import tarfile
tf = tarfile.TarFile('foo.tar')
for member in tarfile.getmembers():
    if member.size > 102400:
        print 'It's a big file in a tarfile - the file is called %s!' % member.name
于 2010-01-07T12:51:01.550 回答
2

如果我正确理解了这个问题,那么如果某些输入文件太大,您就想跳过它们。为此,您可以使用os.path.getsize()

import os.path
if os.path.getsize('f') <= 102400:
  doit();
于 2010-01-07T12:54:12.323 回答
2

只需检查字符串的长度,然后:

if len(data) > 102400:
  print "Skipping file which is too large, at %d bytes" % len(data)
else:
  process(data) # The normal processing
于 2010-01-07T13:02:45.273 回答
1

len(data)如果它是二进制数据,则为您提供以字节为单位的大小。对于字符串,大小取决于使用的编码。

于 2010-01-07T13:04:30.027 回答
0

这个答案似乎无关紧要,因为我似乎误解了这个问题,现在已经澄清了。但是,如果有人在使用几乎相同的术语进行搜索时发现了这个问题,那么这个答案可能仍然是相关的:

只需以二进制模式打开文件

f = 打开(文件名,'rb')

读取/跳过一堆并打印下一个字节。我使用相同的方法一次“修复”了无数图像中的第 n 个字节。

于 2010-01-07T12:49:18.137 回答