11

ファイルsomething.zipからソースデータ全体を読み取る必要があります(解凍しないでください)

私は試した

f = open('file.zip')
s = f.read()
f.close()
return s

ただし、ソース データ全体ではなく、数バイトしか返されません。それを達成する方法はありますか?ありがとう

4

3 に答える 3

29

bバイナリ ファイルを扱う場合は、binary mode( ) を使用します。

def read_zipfile(path):
    with open(path, 'rb') as f:
        return f.read()

ところで、manual の代わりにwithstatementcloseを使用してください。

于 2013-10-08T15:24:47.893 に答える
4

前述のように、操作0x1Aを終了する EOF 文字 ( ) があり.read()ます。これを再現して実証するには:

# Create file of 256 bytes
with open('testfile', 'wb') as fout:
    fout.write(''.join(map(chr, range(256))))

# Text mode
with open('testfile') as fin:
    print 'Opened in text mode is:', len(fin.read())
    # Opened in text mode is: 26

# Binary mode - note 'rb'
with open('testfile', 'rb') as fin:
    print 'Opened in binary mode is:', len(fin.read())
    # Opened in binary mode is: 256
于 2013-10-08T15:27:39.163 に答える
3

これはそれを行う必要があります:

In [1]: f = open('/usr/bin/ping', 'rb')   

In [2]: bytes = f.read()

In [3]: len(bytes)
Out[3]: 9728

比較のために、上記のコードで開いたファイルを次に示します。

-rwx------+ 1 xx yy 9.5K Jan 19  2005 /usr/bin/ping*
于 2013-10-08T15:25:18.753 に答える