まず、文字エンコーディング
1.コンピュータの基本
- CPU:プログラム(メモリに読み込む外部メモリデータから削除テキストエディタ)の動作を制御します。
- メモリ:実行プログラム(操作後のCPU、テキストエディタでデータを格納するメモリ)。
- ハード:データ(テキストエディタ)を記憶します。
2.テキストエディタの文書へのアクセスの原則
- エディタで内容を書くためにも、データの損失停電後、メモリに格納されているので、それは、メモリ内にある、プロセスを開始するために開くエディタを開きます。
- ハードディスクへのブラシエディタメモリデータ:永久に保存するには、[保存]ボタンをクリックする必要があります。
- 私たちは、私は文字だけの束を書いて、他の文書の作成と違いはありません、(実装されていない)PYファイルを書き込みます。
test.pyファイルを実行するための原理3.Pythonインタプリタ
- 第一段階:Pythonインタプリタを起動し、その後、テキストエディタの同等を開始
- 第二段階:Pythonのtest.pyファイルを開くには、テキストエディタのインタプリタと同等、メモリにハードディスクtest.pyファイルの内容から読み取る(小レビュー:のみ通訳を懸念解釈の決定pyhon )の内容をファイル、ファイル拡張子を気にしないでください。
- 第三段階:名に実行されたときに、コードの実際の実装は、構文、Pythonの実行可能ファイル内のコードを、理解するであろう場合、この段階で、つまり= "Pythonのインタープリターは、丁度メモリtest.pyコード(PSにロード解釈さエゴンはエゴン「)「メモリは、文字列のためのスペースを開きます」。
類似点と相違点4.Pythonインタプリタ、テキストエディタ
- 同じポイント:Pythonインタプリタは、テキストエディタと同じですPYファイル機能を、読んだことがあるので、Pythonインタプリタは、ファイルの内容を解釈しています。
- 異なる点:表示または編集するために、テキストエディタ、メモリへのファイルの内容は、単にPythonの構文を無視しますが、PythonインタプリタはないPythonコードを書くことであなたにのぞき見を与えるために、メモリに内容を提出します何が、Pythonの構文を識別し、Pythonのコードを実行します。
5.文字エンコーディングの紹介
5.1文字エンコーディングとは何ですか?
- 原因:既知のコンピュータのみ0と1
- マン・マシン・コミュニケーション・プロセス:文字----->翻訳------->デジタル
- 要するに、デジタルコンピュータに人間の文字エンコーディングを文字コードは認識することができ、この変換は文字コードテーブルと呼ばれる、デジタル人間の文字との対応以外の何ものでもありませんこれは、標準の固定セットに従わなければなりません。
5.2 2つのシーンの文字エンコーディングに関係します
- Pythonでファイルの内容は、(最初の2つのステージは、このカテゴリに属しているPythonのファイルが実行されていない)文字符号化の問題へのアクセスを伴う、文字の束です。
- データ型ストリングは、Python文字列の(すなわち、第三段階のファイルが実行されるPythonの、)です。
文字化けの5.3分析
まず、明確なコンセプト
- ハードディスクストレージのファイル操作へのメモリからブラシファイルを参照し
- メモリの読み出し動作と呼ばれるハード・ディスク・ファイルからファイルを読みます
文字化け2例:
- 文字化け1:ファイルが文字化けして保存されています
テキストファイル内の各国は、我々は、シフトJISを維持するために一人で行くので、ときに、ファイルを保存
障害によるストレージで見つけShift_JISの間には対応関係が存在しないため、他の国からのテキストは、本質的です。しかし、ときに我々は文字化けステージが既に発生しているファイルを保存し、編集し、文句を言うが、疑いがある、とハード存在を維持することはできませんしていない場合、確かに保存された混沌としている預金を主張し、我々は、Shift_JISを持つファイルを開くと、中国人が文字化けしている一方で、日本は、表示することができます。
- 2文字化け:読んでいないファイルが文字化け文字化けしたファイルを保存します
互換性の国々を確保し、UTF-8エンコーディングを使用した場合、ファイルを保存すると、文字化けが、そのようなGBKとして、ファイルを読み込むときに、間違ったデコードモードを選択したことはありません、歪みは、右の選挙を解決することができる文字化け舞台を読み出す読み出しステップで発生しましたその上に復号方式。
6.まとめ
- 文字エンコーディングを指し、どのような基準は、ここで標準デコードしますによると、どのような文字エンコーディング標準に従って、法律のコアの歪みがないことを確認します。
- すべての文字のメモリに書き込まれ、均等に、それはUnicodeのエンコーディングは、我々はエディタを開くなど、「あなた」と入力し、私たちは、「あなたは」漢字であると言うことはできません、それはたくさんのかもしれ単なる記号であり、国は、私たちは同じではないかもしれ単語のスタイルを使用した入力方法に応じて、使用することです。我々は最後に「あなた」を決定するために、ハード・ディスクまたはネットワークベースの伝送を保存する必要がある場合にのみ、プロセスの他のUnicode符号化形式に変換された文字、または日本語の単語、です。要するに、固定メモリの使用がUncidoeコーディング、私たちがコーディングする際に使用するハードディスクに保存されている変更することができる唯一のことです。
- ユニコード----->エンコード(符号化)--------> GBK
- ユニコード<--------デコード(復号化)<---------- GBK
特定のプロセス:
第二に、違いPython2とのpython3文字エンコーディング(理解)
プロセスの実行コードインタプリタ1.python
- スタートPythonインタプリタ(テキストエディタの同等)
- 、ファイルを開き、文字を表示し、構文チェック(関連する文字エンコーディングを、= 1はちょうど非常に普通の文字です)
- 解釈文字(文字コードが再び= 1の可変メモリ空間を生成し、関連します)
2.区別:
コードの詳細 | Python2の実装 | python3の実装 |
---|---|---|
コーディング#:GBKの 印刷( '中') ターミナル:UTF8 |
文字化け | 文字化けしません |
コーディング#:UTF8の ( '中')印刷 ターミナル:UTF8 |
文字化けしません | 文字化けしません |
コーディング#:GBKの 印刷(U 'で') ターミナル:UTF8 |
文字化けしません | 文字化けしません |
コーディング#:UTF8の 印刷( '中' U) ターミナル:UTF8 |
文字化けしません | 文字化けしません |
文字エンコーディングが指定されている場合Python2では、その後、指定された文字エンコーディングに従ってメモリ・アクセスがメモリに入ります。それ以外の場合は文字化けします、解釈または実行に説明するために、指定された文字エンコーディングに従わなければなりません。そうしないと、あなたは、このような変数がUnicodeにメモリにエンコードされます、変数の定義の前でUを追加することができます。
以下のような:
#coding:gbk
name = "爸爸"
しかし、そこには、文字エンコーディングを指定した内容に関係なく、Unicodeのエンコーディングは、メモリへのメモリアクセスの際に使用されるためのpython3でこのような問題にはならないだろう、と任意のUnicode文字エンコーディング変換をエンコードすることができ、そして読書コード領域を読み取るために必要な時間によると、文字エンコーディングの問題に良い解決策ようにします。
第三に、3つのファイルオープンモード
ベース・モード動作、3つのファイルが(デフォルトの動作モードは、モードRである)があります。
- Rリードモード
- モードライト・ワット
- モードAPPEND
ファイル形式の内容を読み、2(コンテンツの読み出しモードBのデフォルトモード)があります。
- トンのテキストモード
- bモードのバイト
その注:両方のモードはrに必要で、単独で使用することができないB、Tは/組み合わせの一つ/ wです。
1.ファイルを開くモードモードR
R:読み取り専用モードを読み、読み出しのみ可能ではなく、書き込み、ファイルを与えられて存在していません。
f = open('32.txt', mode='rt', encoding='utf8')
data = f.read()
print(data)
print(f"type(data): {type(data)}")
f.close()
aaa
bbb
ccc
注意:もう一度読めば、ファイルの末尾に移動しますファイルポインタを読むことf.read()は、読書は空白になります。
ファイルが非常に大きい場合、すべてのコンテンツf.read()ファイルを読むために1時間あるので、それはメモリが鳴り恐れがあり、つまり、コンピュータが立ち往生。だから、ファイルの内容を読み込むためのf.readline()/ f.readlines()を使用することができます。
# f.readline()/f.readlines()
f = open('32.txt', mode='rt', encoding='utf8')
print(f"f.readable(): {f.readable()}") # 判断文件是否可读
data1 = f.readline()
data2 = f.readlines()
print(f"data1: {data1}")
print(f"data2: {data2}")
f.close()
f.readable(): True
data1: aaa
data2: ['bbb\n', 'ccc\n']
2.ワットモードのファイルモードを開きます。
W:のみ読み取ることができない、書き込み、バックファイルにして、空になったファイルの内容を書く時間があり、ファイルが作成された後に内容が書き込まれている場合、ファイルが存在しません。
f = open('test.txt', mode='wb')
f.write('My name'.encode('unicode_escape')) # 编码成bytes类型
f.close()
3.モードのファイルモードを開きます。
A:あなたが追加することができます。ファイルは、ファイルの末尾に書き込み、存在しています。内容が書き込まれたときにファイルが作成された後にファイルが存在しません。
f = open('test.txt', mode='at', encoding='utf8')
f.write('My name\n') # '\n'是换行符
f.write('tom,bill,frank.')
f.write('aaaa')
f.close()
4.バイナリ読み取るためにファイルを開きます。
bモードはもはやバイナリコード化するので、符号化パラメータを追加してはいけません、ファイルの読み書き:ハードディスク上のすべてのファイルがバイナリ形式で格納されているため、Bモードは、一般的なパターンであることに留意すべきです。
f = open('test.txt', 'wb')
f.write('666666'.encode('utf8'))
f.close()
コンテキスト管理ファイル操作と四、
- 私たちは、ファイルを操作するのopen()メソッドを使用する前に、開いているファイルを開くが、我々はまた、手動でオペレーティングシステムを取るファイルを解放する必要があります。しかし、実際には、我々はオープン--withコンテキスト管理ツールのPythonを提供し、ファイルを開くために、より便利な場合があります()。
with open('test.txt', 'rt', encoding='utf8') as f:
print(f.read())
My name
- open()メソッドは、オペレーティングシステムの自動解除する方法を提供するオープンで、占め、カンマ、使い捨て開いて複数のファイルによって分離することができないだけで、高速なファイルをコピーします。
with open('test.txt', 'rb') as fr, \
open('test2.txt', 'wb') as fw:
f.write(f.read())