我如何在 python 中获取变量的字节数,就像在 unix 中给出的 wc -c 一样

发布于 2024-08-17 06:01:17 字数 220 浏览 4 评论 0原文

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

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

谢谢

i am facing some problem with files with huge data.
i need to skip doing some execution on those files.
i get the data of the file into a variable.
now i need to get the byte of the variable and if it is greater than 102400 , then print a message.

update : i cannot open the files , since it is present in a tar file.
the content is already getting copied to a variable called 'data'
i am able to print contents of the variable data. i just need to check if it has more than 102400 bytes.

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

漫雪独思 2024-08-24 06:01:17
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
import os
length_in_bytes = os.stat('file.txt').st_size
if length_in_bytes > 102400:
   print 'Its a big file!'

Update to work on files in a 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
郁金香雨 2024-08-24 06:01:17

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

if len(data) > 102400:
  print "Skipping file which is too large, at %d bytes" % len(data)
else:
  process(data) # The normal processing

Just check the length of the string, then:

if len(data) > 102400:
  print "Skipping file which is too large, at %d bytes" % len(data)
else:
  process(data) # The normal processing
尐偏执 2024-08-24 06:01:17

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

import os.path
if os.path.getsize('f') <= 102400:
  doit();

If I'm understanding the question correctly, you want to skip certain input files if they're too large. For that, you can use os.path.getsize():

import os.path
if os.path.getsize('f') <= 102400:
  doit();
醉梦枕江山 2024-08-24 06:01:17

如果是二进制数据,len(data) 会给出以字节为单位的大小。对于字符串,大小取决于所使用的编码。

len(data) gives you the size in bytes if it's binary data. With strings the size depends on the encoding used.

无风消散 2024-08-24 06:01:17

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

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

f = open(filename, 'rb')

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

This answer seems irrelevant, since I seem to have misunderstood the question, which has now been clarified. However, should someone find this question, while searching with pretty much the same terms, this answer may still be relevant:

Just open the file in binary mode

f = open(filename, 'rb')

read/skip a bunch and print the next byte(s). I used the same method to 'fix' the n-th byte in a zillion images once.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文