どのように私はちょうどUNIXで与え-cトイレのようにPythonでの変数のバイト数を取得します

StackOverflow https://stackoverflow.com/questions/2020318

  •  19-09-2019
  •  | 
  •  

質問

私は巨大なデータを含むファイルといくつかの問題に直面しています。 私はそれらのファイルにいくつかの実行を行ってスキップする必要があります。 私は変数にファイルのデータを取得します。 今私は、変数のバイトを取得する必要があり、それが102400より大きい場合、メッセージを印刷します。

更新:それはtarファイルに存在しているので、私は、ファイルを開くことができません。          コンテンツは、すでに「データ」と呼ばれる変数にコピーなっています          私は、変数データの内容を印刷することができています。私はちょうどそれ以上102400バイトを持っているかどうかを確認する必要があります。

感謝

役に立ちましたか?

解決

ちょうどその時、文字列の長さをチェックします:

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

他のヒント

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

tarファイル内のファイル上で動作するように更新します。

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

私が正しく質問を理解していた場合、あなたは彼らが大きすぎるなら、特定の入力ファイルをスキップします。そのために、あなたが使用することができます os.path.getsize()するます:

import os.path
if os.path.getsize('f') <= 102400:
  doit();
それはバイナリデータだ場合は、

len(data)はあなたのサイズをバイト単位で与えます。文字列でサイズが使用されるエンコーディングに依存します。

私は今、明らかにされた質問を、誤解しているように見えるので、

この答えは、無関係と思われます。しかし、ほとんど同じ条件で検索しているときに、誰かが、この質問を見つける必要があり、この答えはまだ関連している可能性がある。

ただ、バイナリモードでファイルを開く

F =オープン(ファイル名、 'RB')

束をスキップし、次のバイト(複数可)を印刷する/読み取ります。私は無数の画像のn番目のバイトを「固定」するために、同じ方法を使用一度。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top