143 文字列を返す関数があります。文字列には、キャリッジリターンと新しいラインフィード(0x0D、0x0A)が含まれます。ただし、ファイルに書き込むと、新しい改行のみが含まれます。キャリッジリターンと新しいラインフィードを出力に含める方法はありますか。 msg = function(arg1, arg2, arg3) f = open('/tmp/output', 'w') f.write(msg) f.close() python — 黒忍者543 ソース 読んだことがあるfile.__doc__ — WIM
257 バイトを書き込む場合は、ファイルをバイナリモードで開く必要があります。 f = open('/tmp/output', 'wb') — イグナシオ・バスケス=エイブラムス ソース 8 OPはWindows以外のプラットフォームを使用しているようなので、これはPy3でのみ機能します。Py2では、を使用する必要がありますio.open。 — lvc 2 私はこれがpython自体のバグだと思います。Pythonは実行時にデータ型を検出でき、バイナリとテキスト入力の間で検出できるので、Python自体で修正する必要があると思います。 python stdlibのifステートメントで回避できたはずです。同意する場合は賛成投票し、必要な場合は反対票を投じて反対票を投じてください。 — フェリペバルデス 2 @FelipeValdesは残念ながら、コンテンツが誤って検出された場合、コンテンツを作成するときに驚きをもたらす可能性があります。さらに厄介なことに、その不正確な検出は、意外で追跡が困難になる特定の奇妙なエッジのケースでのみ発生する可能性があります。代わりに、明示的な動作に依存することで、この質問があることを意味している場合でも、さまざまなシナリオでのIOの動作を確実に保証できます。 — リアム・ドーソン 1 バイトファイルにはどのような拡張子がありますか? — チアヨンカン @FelipeValdesこれは、驚き/驚きを最小限に抑えるという原則に関連しています(en.wikipedia.org/wiki/Principle_of_least_astonishment)。あなたの方法は、より適切な名前になります:open_and_detect_file_type() — henrycjc
file.__doc__