PythonのCGIでバイナリファイルを扱う場合はprint
で改行コードが追加されることに注意してください。
具体的には
print(open('/path/to/file', 'rb').read())
のようなスクリプト書いてファイルをダウンロードさせようとすると、元のファイルより1バイト分大きなファイルになってしまいます。
修正は例えば次のような感じです。
sys.stdout.write(open('/path/to/file', 'rb').read())
普段HTML
やXML
などを扱っている場合は改行コードで問題にならないので、バイナリファイルを扱う場合は気を付けてください。
リンク
cgi — Common Gateway Interface support — Python 3.8.1rc1 documentation
https://docs.python.org/3/library/cgi.html