0

URL を読み取り、ディスクに書き込むコードがいくつかあります。ここにあります -

    url = 'http://www.cs.purdue.edu/homes/ninghui/courses/Spring06/lectures/lecture05.pdf'
    ret = requests.get(url)
    print ret.headers
    print ret.headers['content-encoding']
    print ret.headers['content-type']

    pathToWrite = 'tmp/test.pdf'

    try:
        fd = os.open(pathToWrite, os.O_RDWR | os.O_CREAT)

        try:
            os.write(fd, ret.text)
        except Exception as e:
            print 'cannot write to file ' + pathToWrite
            raise

        try:
            os.close(fd)
        except:
            print 'cannot close file ' + pathToWrite
            raise

    except:
        print 'file cannot be opened ' + pathToWrite
        raise

上記のコードを使用すると、pdfファイルを取得してディスクに書き込むことができますが、次のエラーが発生します-

UnicodeEncodeError: 'charmap' codec can't encode characters in position 12-13: character maps to <undefined>

次の API を使用すると、同じエラーが発生します -

f = open(pathTowWrite, 'wb')
f.write(ret.text)

明らかな何かが欠けているように感じます。これは簡単すぎて間違っているようです。

4

1 に答える 1

1

書きたくret.contentないret.textret.textPDF を Unicode に変換しようとしますが、PDF のようなバイナリ形式ではおそらく不可能です。

また、組み込みの open 関数を使用することもできます。ここでは低レベルは必要ありませんos.open

于 2013-08-18T23:17:44.437 に答える