ホームページ > バックエンド開発 > Python チュートリアル > Python 2.7 の基本チュートリアル: 入力と出力

Python 2.7 の基本チュートリアル: 入力と出力

黄舟
リリース: 2016-12-24 17:12:50
オリジナル
1858 人が閲覧しました

.. _tut-io:

**************************************** *

入力と出力入力と出力

*************************************** ***

プログラムの出力を表示するにはいくつかの方法があります。データを人間が読める形式で印刷

したり、将来使用するためにファイルに書き込んだりすることができます。この章では、いくつかの可能性について説明します

プログラムの出力結果を表現するにはいくつかの方法があります。データは人間が判読できる形式で印刷したり、後で使用するためにファイルに書き込んだりできます。この章では、いくつかの代替方法について説明します。

.. _tut-formatting:

より高度な出力フォーマット 出力フォーマットで遊んでみましょう

============================== ==== ==============

これまで、*式ステートメント* と

:keyword:`print` ステートメント (A. 3 番目の方法は、ファイル オブジェクトの :meth:`write` メソッド

を使用することです。標準出力ファイルは ``sys.stdout`` として参照できます。

これについて詳しくは、ライブラリ リファレンスを参照してください。) *expression ステートメント* と :keyword:`print` ステートメントという 2 つのまったく異なる出力値メソッドがあります。 (3 番目のアクセス

は、ファイル オブジェクトの :meth:`write` メソッドを使用することです。標準的なファイル出力については、

``sys.stdout`` を参照してください。詳細については、ライブラリを参照してください。参照マニュアル。)

..index:: module: string

単にスペースで区切られた値を出力するだけではなく、出力のフォーマットをさらに制御したい場合があります。

出力をフォーマットするには 2 つの方法があります。

最初の方法は、すべての文字列処理を自分で行うことです。文字列のスライスと

連結操作を使用して、想像できる任意のレイアウトを作成できます。

標準モジュール :mod:`string` には、文字列をパディングするための便利な操作がいくつか含まれています。 2 番目の方法は、:meth:`str.format` メソッドを使用することです。おそらく、単に出力フォーマットを制御する必要があるかもしれません。スペース区切り文字。出力をフォーマットするには

2 つの方法があります。 1 つ目は、文字列全体を制御し、文字の切り取りや連結操作を使用して任意の出力形式を作成できることです。標準モジュール :mod:`string` には、特定の列に文字列を埋めるときに役立つ多数の操作が含まれています。これについては後で説明します。

2 番目の方法は、:meth:`str.format` メソッドを使用することです。

もちろん、1 つの疑問が残ります: 値を文字列に変換するにはどうすればよいでしょうか? 幸いなことに、

Python には、任意の値を文字列に変換する方法があります。それを :func:`repr`

または :func: `str ` 関数。

もちろん、値を文字列に変換する方法という別の質問もあります。幸いなことに、Python には任意の

値を文字列に変換する方法があります。それを :func:`repr` または :func:`str` 関数に渡します。 :func:`str` 関数は人間がかなり判読可能な値の表現を返すことを目的としていますが、:func:`repr` はインタプリタが読み取れる表現を生成することを目的としています

(または、同等の構文がない場合は :exc:`SyntaxError` が強制されます)。人間が使用するための特定の

表現を持たないオブジェクトの場合、:func:`str` は

と同じ値を返します。 :func :`repr`。数値やリストや

辞書のような構造体などの多くの値は、どちらかの関数を使用して同じ表現を持ちます。特に、

浮動小数点数は 2 つの異なる表現を持ちます。 func: `str` は値を人間が読むのに適した形式に変換するために使用され、 :func:`repr` はインタプリタが読み取れる形式に変換されます (同等の構文がない場合、 :exc:`SyntaxError が発生します)。 `例外が発生します) オブジェクトが人間が判読できる解釈形式を持たない場合、 :func:`str` は :func:`repr` と同等の値を返します。数値や連結リスト、辞書などの構造体など多くの種類は、関数ごとに統一された解釈方法を持っています。文字列と

浮動小数点数には独自の解釈方法があります。

いくつかの例:

以下はいくつかの例です::

>>> s = 'Hello, world.'

>>> str(s)

'Hello, world.'

> > /7.0)

'0.14285714285714285'

>>> s = 'x の値は ' + repr(y) + です'...'

>>> print s

x の値は 32.5、y は 40000...

>>> # 文字列の repr() は文字列引用符を追加しますバックスラッシュ:

... hello = 'hello, world/n'

>>> hellos = repr(こんにちは)

>>> print hellos

'hello, world/n'

>>> # repr() への引数は任意の Python オブジェクトです:

... repr((x, y, ('spam', 'eggs')))

"(32.5, 40000, ('spam', '卵'))"

正方形と立方体の表を書く 2 つの方法を次に示します。

有二方法で平方和立方表を写すことができます ::

>>> for x in range(1, 11):

... print repr(x).rjust(2), repr(x*x).rjust(3),

... # 前の行の末尾のカンマに注意してください

... print repr(x*x*x).rjust(4)

...

1 1 1

2 4 8

3 9 27

4 16 64

5 25 125

6 36 216

7 49 343

8 64 512

9 81 729

10 100 1000

> t;> for x in range(1,11):

... print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)

...

1 1 1

2 4 8

3 9 27

4 16 64

5 25 125

6 36 216

7 49 343

8 64 512

9 81 729

10 100 1000

(最初の例では、:keyword:`print` が機能する

の方法によって各列の間に 1 つのスペースが追加されていることに注意してください。常に引数の間にスペースが追加されます。)

(注意第一个例子、 :keyword:`print` 在每列の間に空格を追加しました、它总是在参

数间空格を追加します。)

この例は、文字列オブジェクトの :meth:`rjust` メソッドを示しています。左側にスペース

を詰めることにより、指定された幅のフィールド内の文字列を右揃えにします。  同様のメソッド :meth:`ljust` と :meth:`center` があります。  これらの

メソッドは何も書き込まず、新しい文字列を返すだけです。  input

文字列が長すぎる場合、切り捨てられず、変更されずに返されます。これは列のレイアウトを台無しにしてしまいます

が、通常は、値について嘘をつく代替手段

よりも優れています。  (本当に切り捨てが必要な場合は、 ``x.ljust(n)[:n]`` のようにスライス操作をいつでも追加できます。)

以上は一个 :meth:`rjust` メソッドの演示,它文字列を 1 つの列に出力し、左

側に空枠を埋めることによって右に配置します。同様の方法には、:meth:`ljust` と :meth:`center`

があります。出力される文字列が長すぎる場合でも、それらは中断されず、そのまま出力されるため、別の選択( (どうしても切断が必要な場合は、

の切断操作を使用できます。例: ``x.ljust( n)[:n]`` 。)

別のメソッド、:meth:`zfill` があります。これは、数値文字列の左側にゼロを埋め込みます

。  それはプラス記号とマイナス記号について理解しています:

また、 :meth:`zfill` は、方向数値の文字列表の左側に 0 を埋めるために使用されます。 >>> '12'.zfill(5)

'00012'

>>> '-3.14'.zfill(7)

'-003.14'

>>> '3.14159265359'.zfill(5)

'3.14159265359'

:meth:`str.format` メソッドの基本的な使い方は次のようになります:

メソッド :meth:`str.format` の基本用法如下 ::

>>> print '私たちは「{}!」と言う {} です'.format('knights', 'Ni')

私たちは「Ni!」と言う騎士です

括弧とその中の文字 (フォーマット フィールドと呼ばれます) ) は、:meth:`~str.format` メソッドに渡されるオブジェクト

に置き換えられます。  

括弧内の数字は、

:meth:`~str.format` メソッドに渡されるオブジェクトの位置を指します。 :

大括弧とその中の文字は、 :meth:`~str.format` のパラメータの代わりに使用されます。中的哪一个 ::

>>> print '{0} と {1}'.format('spam', 'eggs')

スパムと卵

>>> print '{1} と {0} '.format('spam', 'eggs')

卵とスパム

:meth:`~str.format` メソッドでキーワード引数が使用されている場合、その値

は、 :

:meth:`~str.format` を呼び出すときにキーワード引数を使用すると、パラメーター名::

>>> によって

の値を参照できます。 { adjective}.'.format(

... food='spam', adjective='absolutely Horrible')

このスパムは本当にひどいです。

位置引数とキーワード引数は任意に組み合わせることができます:

位置とキーワードパラメータは組み合わせて使用​​できます::

>>> print '{0}、{1}、および {other} の物語.'.format('Bill', 'Manfred',

.. . ='Georg')

Bill、Manfred、Georg の物語

``'!s'`` (apply :func:`str`) および ``'!r'`` (apply :func) : `repr`) は、書式設定される前に値を変換するために使用できます。 :

``'!s'`` (適用対象:func:`str`) および ``'!r'`` (適用対象: func:`repr` ) 書式設定する前に値を

変換できます。 ::

>>> import math

>>> print 'PI の値は約 {}.'.format(math.pi)

PI の値は約 3.14159265359 です。

>>> print 'PI の値はおよそ {!r} です。'.format(math.pi)

PI の値はおよそ 3.141592653589793 です。

オプションの ``:'' とフォーマット指定子をフィールド名の後に付けることができます。これにより、値のフォーマット方法をより詳細に制御できます。次の例では、` およびフォーマット ディレクティブの後の 3 桁を切り捨てます。これにより、値の書式設定をより詳細に制御できるようになります。次の例では、Pi を 3 桁の精度に変換します。 ::

>>> import math

>>> print 'PI の値は約 {0:.3f} です。'.format(math.pi)

PI の値は約 3.142.

``:''`` の後に整数を渡すと、そのフィールドの幅が最小

文字数になります。これは、フィールドの後のテーブルを美しくするのに役立ちます。 :'`` 整数の後にフィールドを追加すると、フィールドの最小幅が制限され、テーブルを美しくするときに非常に役立ちます。 ::

>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}

>>> table.items() :

... print '{0:10} ==> {1:10d}'.format(名前, 電話)

... 7678

Sjoerd ==>分割したくない長いフォーマット文字列の場合、位置ではなく名前

でフォーマットされる変数を参照できれば便利です

これは、単純に dict を渡して using

するだけで実行できます。キーにアクセスするには角かっこ ''[]'' を使用します:

非常に長い書式文字列があり、それを分割したくない場合。

フォーマットされた変数を位置ではなく名前で参照できれば便利です。

括弧::

>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}

を使用して辞書を渡し、そのキーにアクセスする簡単な方法があります。

>>> print ('ジャック: {0[ジャック]:d}; シェルド: {0[ショールド]:d}; '

... 'Dcab: {0[Dcab]: d}' .format(table))

Jack: 4098; Sjoerd: 4127; Dcab: 8637678

これは、「**」

表記を使用してテーブルを渡すことによっても実行できます。この辞書をキーワード引数として渡します。 ::

>>> table = {'Sjoerd': 4098, 'Dcab': 8637678}

>>> print 'Jack: {Jack:d}; : {Sjoerd:d}; Dcab: {Dcab:d}'.format(**table)

Jack: 4098; Sjoerd: 4127; Dcab: 8637678

これは、新しい組み込みと組み合わせると特に便利です。関数:`vars`

すべてのローカル変数を含む辞書を返す

関数

このアプローチは、新しい組み込み関数 :func:`vars` と組み合わせると非常にうまく機能します。この関数は、すべてのローカル変数を含む辞書を返します。

:meth:`str.format` を使用した文字列フォーマットの完全な概要については、

:ref:`formatstrings` を参照してください。

:meth:`str.format` を使用した文字列フォーマットの完全な概要については、を参照してください

:ref:`フォーマット文字列` 。

古い文字列の書式設定 古い文字列の書式設定

----------------------------------------------------- -----

``%`` 演算子は、文字列の書式設定にも使用できます。これは、 :cfunc:`sprintf`/ スタイルの書式文字列と同じように

左引数を解釈します。右引数を指定し、この書式設定

操作の結果の文字列を返します。 例:

演算子 ``%`` は文字列の書式設定にも使用できます。 :cfunc:`sprintf` と同様の方法で左の引数を解析し、右の引数を適用して、書式設定操作によって生成された文字列を取得します。例::

>>> > >> print 'PI の値は約 %5.3f です。' % math.pi

:meth:`str.format` は非常に新しいので、 Python コードの一部では依然として ``%``

演算子が使用されています。 ただし、この古いスタイルの書式設定は最終的に言語から削除されるため、通常は :meth:`str.format` を使用する必要があります。 meth: `str.format` はまだ非常に新しく、多くの Python コードでは依然として ``%`` 演算子が使用されています。

ただし、古い書式設定メソッドは最終的には言語から削除されるため、

可能な限り :meth:`str.format` を使用する必要があります。

詳細については、:ref:`string-formatting` セクションをご覧ください。

さらに詳しい情報は、:ref:`string-formatting` セクションをご覧ください。

.. _tut-files:

ファイルの読み取りと書き込み ファイルの読み取りと書き込み

============================== == ===============

..index::

組み込み:open

オブジェクト:file

:func:`open`はファイルオブジェクトを返します。一般的に 2 つの

引数: ``open(filename, mode)`` とともに使用されます。

Function:func:`open` はファイル オブジェクトを返します。 一般的な使用法には 2 つのパラメータが必要です:

``open(filename, mode)`` ` 。

::

>>> f = open('/tmp/workfile', 'w')

>>> print f

<ファイル '/tmp/workfile', mode 'w' at 80a0960>

最初の引数はファイル名を含む文字列です

ファイルの使用方法を説明するいくつかの文字を含む別の文字列

です。ファイルが読み取られるだけの場合は `'r'``、書き込みのみの場合は ''w'``

(同じ名前の既存のファイルは消去されます)、そして

``a'`` が開きます追加するファイルは、ファイルに書き込まれるすべてのデータが自動的に末尾に追加されます。 ``'r+' は、読み取りと書き込みの両方のためにファイルを開きます。

省略した場合は '`` が仮定されます。

最初のパラメータはファイル名を識別する文字列です。 2 番目のパラメータは、ファイルの使用方法を説明する限られた数の文字で構成される文字列です。オプションの *モード* は次のとおりです: ``'r'``、このオプションはファイルを読み取り専用にします

``'w'``、このオプションはファイルを書き込み専用にします (同じ名前のファイルの場合、これは操作により元のファイルが上書きされます); ``'a'``、

このオプションはファイルを追加モードで開きます; ``'r+'`` は読み取り/書き込みモードでファイルを開きます。 *パラメータはオプションです。指定しない場合、デフォルトは ``'r'' モードになります。

Windows では、モードに追加された「'b」はバイナリ モードでファイルを開くため、「'rb'」、「'wb'」、「」のようなモードもあります

'r+b'``。Windows 上の Python では、テキスト ファイルとバイナリ ファイルが区別されます。テキスト ファイルの行末文字は、データの読み取りまたは書き込み時に自動的にわずかに変更されます。ファイル データへのシーンの変更は ASCII テキスト ファイルには問題ありませんが、:file:`JPEG` や :file:`EXE` ファイルのようなバイナリ データが破損することがありますので、バイナリ モードを使用する場合は十分に注意してください。このようなファイルを読み書きする場合、

モードに「b」を追加しても問題はありません。そのため、すべてのバイナリ ファイルに対して

プラットフォームに依存せずに使用できます。

Windows の場合プラットフォームでは、「b」モードはバイナリ モードでファイルを開くため、「rb」、「wb」、「r+b」に似たオプションが存在する場合があります。 「モードの​​組み合わせを待ちます。」 Windows プラットフォームでは、テキスト ファイルとバイナリ ファイルには違いがあります。テキスト ファイルの読み取りおよび書き込み時には、行末に行終端文字が自動的に追加されます。こんなバックステージクソ

ASCIIテキストファイルの操作方法は問題ありませんが、JPEGや.EXEなどのバイナリ

ファイルを操作する場合は破損の原因となります。これらのファイルを操作する場合は、必ずバイナリモードで開いてください。

Unix では、``'b'' モードを追加しても無害なので、すべてのバイナリ ファイル処理でプラットフォームに依存せずに使用できます。

.. _tut-filemethods:

ファイル オブジェクトのメソッド ファイル オブジェクトのメソッド

----------------------------- --- ----------

このセクションの残りの例では、

``f`` というファイル オブジェクトがすでに作成されていることを前提としています。

このセクションの例は次のとおりです。すべてのデフォルトのファイルオブジェクト ``f`` が作成されました。

ファイルの内容を読み取るには、 ``f.read(size)`` を呼び出します。これは、

データの一部を読み取り、それを文字列として返します。*size* はオプションの数値引数です。が省略されているか負の場合、ファイルの内容全体が読み取られて返されます。それ以外の場合は、最大で *size* バイトが読み取られて返されます。ファイルの終わりに達すると、``f.read()`` は空の文字列 (``""``) を返します。

ファイルの内容を読み取るには、``f.read()`` を呼び出す必要があります。 read( size)`` を使用すると、このメソッドは一定量のデータを読み取り、その内容を文字列の形式で返します。 *size* は文字列の長さを指定するオプションの値です。

size が指定されていないか、負の数として指定されている場合は、ファイル全体が読み取られて返されます。ファイルサイズが現在のマシンメモリの 2 倍

倍になると問題が発生します。逆に、データはできるだけ大きく読み取られて返されます。

ファイルの終わりに達すると、f.read() は空の文字列 ("") を返します。

::

>>> f.read()

'これはファイル全体です。/n'

>>> f.read()

`` f.readline()`` はファイルから 1 行を読み取ります。改行文字 (``/n``)

は文字列の最後に残り、

ファイルの最後の行でのみ省略されます。ファイルが改行で終わっていない場合、戻り値

は明確になります。 `f.readline()` が空の文字列を返した場合、ファイルの終わりに達しています

。 ``'/n'' で表され、改行が 1 つだけ含まれる文字列

``f.readline()`` はファイルから 1 行を読み取り、最後に改行が自動的に追加されます。文字列文字

( ``/n`` ) の場合、この操作はファイルの最後の行が改行文字で終わっていない場合にのみ無視されます。

こうすれば、 ``f.readline()`` が空の文字列を返した場合、それが空の行であれば、それはファイルの終わりに達したことを意味します。これは、改行のみを含む文字列 ` `'/n`` として記述されます。 ::

>>> f.readline()

'これはファイルの最初の行です。/n'

>>> f.readline()

' file/n'

>>> f.readline()

''

``f.readlines()`` は、ファイル内のすべてのデータ行を含むリストを返します。オプションのパラメーター *sizehint* を使用すると、

ファイルからその行を完成させるのに十分なバイト数を読み取り、そこから行を返します。 This

は、行ごとに大きなファイルを効率的に読み取るためによく使用されます。

ファイル全体をメモリにロードする必要があるため、

f.readlines() はファイル内のすべてのデータ行を含むリストを返します。

*sizehint* パラメーターが指定されている場合、複数行のビットが読み込まれ、複数行のテキストが返されます。この機能

は通常、大きな行ファイルを効率的に読み取り、ファイル全体をメモリに読み込む必要性を回避するために使用されます。この操作では完全な行のみが返されます。 ::

>>> f.readlines()

['これはファイルの最初の行です。/n', 'ファイルの 2 行目です/n']

行を読み取る別のアプローチファイルオブジェクトをループすることです。これは覚えやすく、高速で、コードはより単純です::

>>> for line in f:

print line,

これはファイルの最初の行です。

ファイルの 2 行目

代替のアプローチは単純ですが、きめ細かい制御ができません

2 つのアプローチはライン バッファリングの管理方法が異なるため、混合するべきではありません

このアプローチはシンプルですが、完全な制御は提供しません。手術。 2 つの方法は異なる方法でバッファを管理するため、混合することはできません。

``f.write(string)`` は *string* の内容をファイルに書き込み、

``None`` を返します。  

``f.write(string)`` *string* のコンテンツ書き込み文を ``None`` に返します。 f.write('This is a test/n')

文字列以外のものを書き込むには、文字列に変換する必要があります

first:

如果必要写入文字符串以外のデータ,就要先これらのデータは文字列に変換されます。 ::

>>>値 = ('答え', 42)

>>> s = str(値)

>>> f.write(s)

``f.tell()`` は、

ファイル内のファイルオブジェクトの現在の位置をファイルの先頭からバイト単位で示す整数を返します。  ファイル

オブジェクトの位置を変更するには、 ``f.seek(offset, from_what)`` を使用します。  位置は、参照点に *offset* を追加することで計算されます

;参照点は *from_what* 引数によって

選択されます。  *from_what* 値 0 はファイルの先頭

から測定し、1 は現在のファイル位置を使用し、2 はファイルの末尾を参照点として

として使用します。  *from_what* は省略でき、デフォルトは 0 で、ファイルの

先頭を参照点として使用します。 

``f.tell()`` は、ファイル内のファイルオブジェクトの指向位置を表す整数を返します。この数値は、ファイルオブジェクトの指向位置の比を表します。変更が必要です。 *from_what* は 0 で表示されます。 ::

自文書

開始位置の開始、1 は現在の文書の位置の開始を示し、2 は自文書の末尾の開始を示します。 >>> f = open('/tmp/workfile', 'r+')

>>> f.write('0123456789abcdef')

>>> f.seek(5) # ファイルの 6 バイト目に移動します

>>> f.read(1)

'5'

>>> f.seek(-3, 2) # 終了前の 3 バイト目に移動します

>>> f.read(1)

'd'

ファイルの使用が完了したら、 ``f.close()`` を呼び出してファイルを閉じ、開いているファイルによって占有されている

システム リソースを解放します。  ``f.close()`` を呼び出した後、

ファイルオブジェクトを使用しようとする試みは自動的に失敗します。 

ファイルの使用が完了した後、 `f.close()` を使用してファイルを閉じることができ、開いたファイルの後に占有されていたシステムリソースを解放します。 ::

>>> f.close()

>>> f.read()

トレースバック (最新の呼び出しは最後):

ファイル ""、行 1、?

ValueError: 閉じられたファイルに対する I/O 操作

ファイル

オブジェクトを扱うときは、:keyword:`with` キーワードを使用します。  これには、途中で例外が発生した場合でも、

スイートの終了後にファイルが適切に閉じられるという利点があります。  また、同等の :keyword:`try`/ -/ :keyword:`finally` ブロックを書くよりもずっと

短いです

用关键字 :keyword:`with` 処理文件オブジェクトは个好习惯。 :keyword:`try`/ -/

:keyword:`finally` 块の書。 ::

>>> with open('/tmp/workfile', 'r') as f:

... read_data = f.read()

>>> f.closed

True

File オブジェクトには、:meth:`~file.isatty` や

:meth:`~file.truncate` など、あまり使用されない追加のメソッドがあります。ファイル オブジェクトの完全なガイドについては、Library

Reference を参照してください。

文件オブジェクト还有不太常用的追加メソッド,比如 :meth:`~file.isatty` と :meth:`~file.truncate` 在库参

検討手册中にある文件オブジェクトの完全な指南。 --------------------------------------

..index::モジュール:pickle

文字列はファイルに簡単に書き込んだり、ファイルから読み取ることができます。 :meth:`read` メソッドは文字列のみを返すため、数値の場合は少し手間がかかります

。これは、``'123 のような文字列を受け取る :func:`int` のような関数に渡す必要があります

'``

そしてその数値 123 を返します。 ただし、より複雑なデータを保存したい場合は

リスト、辞書、クラス インスタンスなどのデータ型では、物事はさらに複雑になります

。ファイル内の文字列の読み取りと書き込みは簡単に行えます。 :meth:`read`

メソッドは文字列のみを返すため、数値はもう少し手間がかかります。これは :func:`int` のようなメソッドに渡され、その後

``'' に渡される必要があります。 123 「``」のような文字は、対応する値 123 に変換されます。ただし、リスト、辞書、クラス インスタンスなど、より複雑なデータ型を保存する必要がある場合、状況はさらに複雑になります。

複雑なデータ型を保存するためにユーザーが常にコードを書いたりデバッグしたりするのではなく、Python には :mod:`pickle` と呼ばれる標準モジュールが用意されています。

これは、ほぼすべての Python オブジェクト (一部のオブジェクトも含む) を受け入れることができる素晴らしいモジュールです

Python コードの形式!)、それを文字列表現に変換します。このプロセス

は、文字列

表現からオブジェクトを再構築することを、pickle 間と呼びます。

オブジェクトを表す文字列はファイルまたはデータに保存されているか、

ネットワーク接続を介して離れたマシンに送信されている可能性があります。

幸いなことに、ユーザーは複雑なデータ型を保存するために作成したりデバッグしたりする必要はありませんコード自体。 Python は :mod:`pickle` という標準モジュールを

提供します。これは、ほぼすべての

Python オブジェクト (一部の Python コード スニペットも!) を文字列として表現できる素晴らしいモジュールであり、

カプセル化 ( :dfn:`pickling` ) と呼ばれるプロセスです。文字列式からオブジェクトを再構築することは、アンピックリング ( :dfn:`unpickling` ) と呼ばれます。カプセル化された状態のオブジェクトはファイルまたはオブジェクトに保存でき、ネットワークを介してリモート マシン間で転送することもできます。

オブジェクト ``x`` と、書き込み用に開かれたファイル オブジェクト ``f`` がある場合、オブジェクトをピクルする最も簡単な方法は 1 行のコードだけで済みます

書き込みモードで開かれたファイル オブジェクト ``x``、ファイル オブジェクト ``f``、オブジェクトをカプセル化する最も簡単な

メソッドに必要なコードは 1 行だけです::

pickle.dump(x, f)

To unpickle ``f`` が読み取り用に開かれたファイル オブジェクトである場合、オブジェクトをもう一度

``f`` が読み取りモードで開かれたファイル オブジェクトである場合は、このオブジェクトをリロードしてアンパックできます::

x = pickle.load(f)

(これには他にもバリエーションがあり、多くのオブジェクトをピクルするとき、またはピクルしたデータをファイルに書き込みたくない場合に使用されます。 : mod については完全なドキュメントを参照してください

:`pickle` については、Python ライブラリ リファレンスを参照してください。)

(パックされたデータをファイルに書き込みたくない場合は、他のバリエーションも利用できます。

:mod:`pickle` の完全なドキュメントは、次のとおりです。 Python ライブラリ リファレンスを参照してください)。

:mod:`pickle` は、他のプログラムや将来の同じプログラムの呼び出しによって保存および再利用できる Python オブジェクトを作成する標準的な方法です。これを表す専門用語は :dfn:` です。 :mod:`pickle` は非常に広く使用されているため、Python 拡張機能を作成する多くの作成者は、行列などの新しいデータ型が適切に pickle 化および unpickle 化できるように注意を払っています

:mod:` pickle` は、後で他のプログラムまたはそれ自体で使用できるように Python オブジェクトを保存する標準的な方法です。

この一連のテクノロジーを提供するのは、:dfn:`persistent` オブジェクトです。 :mod:`pickle` は広く使用されているため、多くの Python 拡張機能作成者は、行列などの新しいデータ型がカプセル化とアンパックに適しているかどうかに細心の注意を払っています。

上記は Python 2.7 の基本的なチュートリアルです: 入力と出力のコンテンツ その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート