Pythonでテキストファイルをクリアする方法


ベストアンサー

Pythonでテキストファイルをクリアするにはどうすればよいですか?

ほとんどの言語では、書き込み用にファイルを開いてから閉じるだけで十分です。私が使用するイディオムは次のとおりです。

with open(theFile, “w”) as fp:

pass

これにより、長さ0のファイルが残るはずです。

問題は、なぜこれを実行するのかということです。ファイルを削除したい場合は、ファイルを削除してください(os.removeを参照)。上書きする場合は、最初にクリアする必要はありません。書き込み用に開き、新しいコンテンツを書き込みます。

回答

古いバージョンのPythonでは、テキストファイルとバイナリファイルの違いは、Pythonが行区切り文字を処理する方法に関係していました(ほとんどの場合、関連するだけです)。 MS-DOS / Windowsでのテキストファイル(行末にCR / LF文字ペアを使用)および古いMacintoshシステム(MacOS Xより前)のテキストファイル(CR、キャリッジリターン(\ r)またはASCII 0x0Dを使用)の処理LFの代わりに(改行、\ n、ASCII 0x0A、Unix、Linux、およびMacOS Xで使用されます)。

これは通常、Python2インタープリターによって自動検出され、たまに超過する必要がありました。ただし、Python 2以前では、すべてのファイルを単純なバイトストリーム(8ビットASCII文字と交換可能)として扱うことができました。の「b」フラグ/モードopen()ファイルをバイナリとして扱うためは、行末だけでした。

Python 3では、話はもっと複雑です。しかし、単純な考え方は、テキストファイルがデフォルトであり、一部として扱われるということです。 Unicodeのエンコーディング(UTF-8またはUS-ASCIIなど)。ファイルをバイナリとして処理するには、ファイルを開くときにmode引数に「b」フラグを追加するだけです。しかし現在、そのファイルに対するすべての操作には、文字列ではなくバイトオブジェクトが必要です。したがって、読み取りはバイトを返し、ividを呼び出すにはデータをバイトとしてキャストする必要があります。 = “f1c82958de”>

.write()メソッド(など)。

次の例に注意してください:

# Default:

textfile = open(‘somefile.txt’)

## read-only, text, encoding depends on platform by likely UTF-8 or US-ASCII

# Binary:

data = open(‘somedata.bin’, ‘rb’)

## read-only, bytes() data

モードは、書き込み可能なテキストファイルの場合は w または w + にすることもできます。 (+を追加することによるオプションの読み取り/書き込みあり)または a または a + 追加のみ。 b フラグは、テキストではなくバイト(バイナリ)のフラグに追加できます。

注:テキストファイルはで開くことができます。バイナリモード。 Pythonはそれらをテキストではなくバイトストリームとして扱うだけであり、文字列として使用するには、コンテンツに対して文字列変換関数を明示的に呼び出す必要があります(明示的なエンコード引数を使用)。

ここにガイドがあります。詳細: MarkLutzによるPython3.X文字列チュートリアル

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です