pythonデータのシーケンス化に関するピット
------世界にはもともとそんなに穴がないので、pythonを3に更新すると穴が多くなります
どの言語の開発においても、データの保存と解析は欠かせません.プラットフォームにまたがる優れたxmlとjsonのほか、pythonが言及するのは、pickleモジュール自体が最もよく使われているものです.使用上、pythonの一般的なモジュールインタフェースはきれいで簡単で、jsonはpickleの両方とそっくりです.まず使い方を見てみましょう.コードは以下の通りです.
以上のコードはpython 3にあります.5で間違いなく実行され、utf-8符号化漢字が認識されます.しかし、多くの場合、データの解析は使用するだけでなく、保存のために行われることが多い.無関係接続型の多くはテキストで格納されるため、データをテキストに書き込む必要があります.pythonの通常のテキスト書き込みは文字列のみをサポートし、jsonとpickleはテキスト書き込みに独自のメソッドインタフェースがあり、通常のデータ変換インタフェースともよく区別され、末尾のsを削除すればよい.コードは次のとおりです.
pickleの使用方法は基本的に同じで、書き込まれたテキストフォーマットがtxtまたはpkであるだけです.もちろんjsonはtxtに直接書き込むこともできます.以上のコードはpython 3.5運転に間違いはない(人柄が悪いことを排除しない).簡潔で便利そうで難点がないようですが、よくある穴を楽しく話してみましょう.
あなたが何を読むにしても、私は少しもデータを持っていません.
このようにエラーが発生したのは、原因が明らかで、jsonには解析可能な内容がなく、一般的に直接ファイルから除外されると、読み取ったテキストが空白であること、つまりデータを書き込むときにエラーが発生していることがわかります.しかし、コードは間違っていません.書き込み検出を行わなければ、差は多くありません.この理由は簡単です.ほとんどは、書き込み時に呼び出されるインタフェースがdumpではなくdumpsであるため、プログラム自体はコンパイルできますが、実際にはテキスト書き込みはありません.読み取り時に直接エラーが発生します.この問題が発生した場合は、データを書き込むときに呼び出されるインタフェースを確認します.
あなたが私に何を書いてほしいにしても、どうせ私は書けません.
エラーは上記のように、このエラーはpickle書き込みに対して、原因も明らかで、書き込みは文字列でなければならない.jsonがエラーを報告しない理由は、文字列のように長いからだと思います.この頼りない考えを無視する.この引き起こした誤りは次のものに残しておく.解決コードは以下の通りです:(ps:2.7で叩くのはこの欠点に遭遇していません.3.5で必ず「wb」状態で正常に書き込むことができます.)
以上、jsonのエラーは正反対で、TypeError:a bytes-like object is required,not'str'と間違えられる可能性があります.例を挙げる必要はありません.pickleの穴に足を踏み入れ、直接「wb」状態を「w」に戻せば解決します.しかし、強いねじれの瓜が甘くないかどうかは気にせず、無理にねじり落とそうとする時がある.強迫症を犯した場合、必ずwbの状態で使用しなければならない場合、解決コードは以下の通りです:(ps:深刻で使用をお勧めしません.実は私は半日も欠点がどこにあるか分かりません.頭痛医頭足痛医足、原因にかかわらず、強引にそれを書きました.運行と結果は間違いありませんが、どこか間違っているに違いありません)
)
あなたが何をしようと、どうせ私には関数がありません.
上記のようにjsonにはdumpsモジュールは存在しません.ローカルファイルを調べます.ほとんどの原因はローカルファイルにjsonがあるからです.py.pythonのパッケージインポートは、兄弟ディレクトリの下にあるファイルを直接インポートします.ローカルファイルが重複していない場合は、インストールファイルを調べるしかありません.pythonコマンドライン編集モードでhelp(json.py)ファイルが存在する場合は、その詳細と保存場所が表示されます.しかし、インストールファイルが失われた場合、私は遭遇しませんでした.踏んだ穴はローカルファイルが重複していて、逆にインストールファイルで長い間調べていました.
実はまだいくつか出会って、しかし熟知してわざと穴の中に落ちたいと思って、入ることができません.多分、遠くまで行かないうちに道は穴だらけです.
転載先:https://www.cnblogs.com/lingluo/p/6075309.html
どの言語の開発においても、データの保存と解析は欠かせません.プラットフォームにまたがる優れたxmlとjsonのほか、pythonが言及するのは、pickleモジュール自体が最もよく使われているものです.使用上、pythonの一般的なモジュールインタフェースはきれいで簡単で、jsonはpickleの両方とそっくりです.まず使い方を見てみましょう.コードは以下の通りです.
import json,pickle # 。
data = {
'name' : "lixin",
'sex' :"female",
'height':1.58,
'weight':82,
'utterance':' , '
}
jsondata = json.dumps(data) # json
pythondata1 = json.loads(jsondata) #json python
print(pythondata1)
pickledate = pickle.dumps(data)#
pythondata2 = pickle.loads(pickledate)# python
print(pythondata2)
以上のコードはpython 3にあります.5で間違いなく実行され、utf-8符号化漢字が認識されます.しかし、多くの場合、データの解析は使用するだけでなく、保存のために行われることが多い.無関係接続型の多くはテキストで格納されるため、データをテキストに書き込む必要があります.pythonの通常のテキスト書き込みは文字列のみをサポートし、jsonとpickleはテキスト書き込みに独自のメソッドインタフェースがあり、通常のデータ変換インタフェースともよく区別され、末尾のsを削除すればよい.コードは次のとおりです.
with open("jsondata.json","w") as file: # jsondata.json ,
json.dump(data,file) #data json
file.close()#
with open("jsondata.json","r") as file:#
l = json.load(file) # python
print(l) #
file.close() #
pickleの使用方法は基本的に同じで、書き込まれたテキストフォーマットがtxtまたはpkであるだけです.もちろんjsonはtxtに直接書き込むこともできます.以上のコードはpython 3.5運転に間違いはない(人柄が悪いことを排除しない).簡潔で便利そうで難点がないようですが、よくある穴を楽しく話してみましょう.
あなたが何を読むにしても、私は少しもデータを持っていません.
Traceback (most recent call last):
File "/Users/penglong/Documents/python/s10/day3/test.py", line 13, in
l = json.load(file)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/__init__.py", line 268, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/__init__.py", line 319, in loads
return _default_decoder.decode(s)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
このようにエラーが発生したのは、原因が明らかで、jsonには解析可能な内容がなく、一般的に直接ファイルから除外されると、読み取ったテキストが空白であること、つまりデータを書き込むときにエラーが発生していることがわかります.しかし、コードは間違っていません.書き込み検出を行わなければ、差は多くありません.この理由は簡単です.ほとんどは、書き込み時に呼び出されるインタフェースがdumpではなくdumpsであるため、プログラム自体はコンパイルできますが、実際にはテキスト書き込みはありません.読み取り時に直接エラーが発生します.この問題が発生した場合は、データを書き込むときに呼び出されるインタフェースを確認します.
あなたが私に何を書いてほしいにしても、どうせ私は書けません.
File "/Users/penglong/Documents/python/s10/day3/test.py", line 17, in
pickle.dump(data,file)
TypeError: write() argument must be str, not bytes
エラーは上記のように、このエラーはpickle書き込みに対して、原因も明らかで、書き込みは文字列でなければならない.jsonがエラーを報告しない理由は、文字列のように長いからだと思います.この頼りない考えを無視する.この引き起こした誤りは次のものに残しておく.解決コードは以下の通りです:(ps:2.7で叩くのはこの欠点に遭遇していません.3.5で必ず「wb」状態で正常に書き込むことができます.)
with open("pickle.pk","wb") as file: # "w" "wb"
pickle.dump(data,file)
file.close()
以上、jsonのエラーは正反対で、TypeError:a bytes-like object is required,not'str'と間違えられる可能性があります.例を挙げる必要はありません.pickleの穴に足を踏み入れ、直接「wb」状態を「w」に戻せば解決します.しかし、強いねじれの瓜が甘くないかどうかは気にせず、無理にねじり落とそうとする時がある.強迫症を犯した場合、必ずwbの状態で使用しなければならない場合、解決コードは以下の通りです:(ps:深刻で使用をお勧めしません.実は私は半日も欠点がどこにあるか分かりません.頭痛医頭足痛医足、原因にかかわらず、強引にそれを書きました.運行と結果は間違いありませんが、どこか間違っているに違いありません)
)
with open("jsondata.json","wb") as file:
file.write((json.dumps(data).encode("utf-8")))# utf-8 byte 。
file.close()
あなたが何をしようと、どうせ私には関数がありません.
Traceback (most recent call last):
File "/Users/penglong/Documents/python/s10/day3/test.py", line 10, in
json.dumps(data,file)
AttributeError: module 'json' has no attribute 'dumps'
上記のようにjsonにはdumpsモジュールは存在しません.ローカルファイルを調べます.ほとんどの原因はローカルファイルにjsonがあるからです.py.pythonのパッケージインポートは、兄弟ディレクトリの下にあるファイルを直接インポートします.ローカルファイルが重複していない場合は、インストールファイルを調べるしかありません.pythonコマンドライン編集モードでhelp(json.py)ファイルが存在する場合は、その詳細と保存場所が表示されます.しかし、インストールファイルが失われた場合、私は遭遇しませんでした.踏んだ穴はローカルファイルが重複していて、逆にインストールファイルで長い間調べていました.
実はまだいくつか出会って、しかし熟知してわざと穴の中に落ちたいと思って、入ることができません.多分、遠くまで行かないうちに道は穴だらけです.
転載先:https://www.cnblogs.com/lingluo/p/6075309.html