# SOME DESCRIPTIVE TITLE. # Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. # FIRST AUTHOR , YEAR. # # Translators: # tomo, 2018 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-09 18:48+0900\n" "PO-Revision-Date: 2018-06-29 17:19+0000\n" "Last-Translator: tomo, 2018\n" "Language-Team: Japanese (https://www.transifex.com/python-doc/teams/5390/" "ja/)\n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../../tutorial/inputoutput.rst:5 msgid "Input and Output" msgstr "入力と出力" #: ../../tutorial/inputoutput.rst:7 msgid "" "There are several ways to present the output of a program; data can be " "printed in a human-readable form, or written to a file for future use. This " "chapter will discuss some of the possibilities." msgstr "" "プログラムの出力方法にはいくつかの種類があります。\n" "データを人間が読める形で出力することもあれば、将来使うためにファイルに書くこ" "ともあります。\n" "この章では、こうした幾つかの出力の方法について話します。" #: ../../tutorial/inputoutput.rst:15 msgid "Fancier Output Formatting" msgstr "出力を見やすくフォーマットする" #: ../../tutorial/inputoutput.rst:17 msgid "" "So far we've encountered two ways of writing values: *expression statements* " "and the :func:`print` function. (A third way is using the :meth:`write` " "method of file objects; the standard output file can be referenced as ``sys." "stdout``. See the Library Reference for more information on this.)" msgstr "" "これまでに、値を出力する二つの方法: *式文 (expression statement)* と :func:" "`print` 関数が出てきました。 (第三はファイルオブジェクトの :meth:`write` メ" "ソッドを使う方法です。標準出力を表すファイルは ``sys.stdout`` で参照できま" "す。詳細はライブラリリファレンスを参照してください。)" #: ../../tutorial/inputoutput.rst:22 msgid "" "Often you'll want more control over the formatting of your output than " "simply printing space-separated values. There are two ways to format your " "output; the first way is to do all the string handling yourself; using " "string slicing and concatenation operations you can create any layout you " "can imagine. The string type has some methods that perform useful " "operations for padding strings to a given column width; these will be " "discussed shortly. The second way is to use :ref:`formatted string literals " "`, or the :meth:`str.format` method." msgstr "" "出力をフォーマットする際に、単に値をスペースで区切って出力するよりももっとき" "め細かな制御をしたい場合があります。\n" "出力をフォーマットするのには大きく分けて二つの方法があります。\n" "第一の方法は、全ての文字列を自分で処理するというものです。文字列のスライスや" "結合といった操作を使えば、思い通りのレイアウトを作成することができます。文字" "列オブジェクトは、文字列を指定されたカラム幅に揃えるための幾つかの便利なメ" "ソッドを提供しています。これらのメソッドについてはすぐ後で簡単に説明しま" "す。\n" "もうひとつの方法は :ref:`フォーマット済み文字列リテラル ` や :" "meth:`str.format` メソッドを利用することです。" #: ../../tutorial/inputoutput.rst:31 msgid "" "The :mod:`string` module contains a :class:`~string.Template` class which " "offers yet another way to substitute values into strings." msgstr "" ":mod:`string` モジュールの :class:`~string.Template` クラスも、文字列中の値を" "置換する別の方法を提供しています。" #: ../../tutorial/inputoutput.rst:34 msgid "" "One question remains, of course: how do you convert values to strings? " "Luckily, Python has ways to convert any value to a string: pass it to the :" "func:`repr` or :func:`str` functions." msgstr "" "もちろん、一つ問題があります。値をどうやって文字列に変換したらいいのでしょう" "か?幸運なことに、Python には値を文字列に変換する方法があります。値を :func:" "`repr` か :func:`str` 関数に渡してください。" #: ../../tutorial/inputoutput.rst:38 msgid "" "The :func:`str` function is meant to return representations of values which " "are fairly human-readable, while :func:`repr` is meant to generate " "representations which can be read by the interpreter (or will force a :exc:" "`SyntaxError` if there is no equivalent syntax). For objects which don't " "have a particular representation for human consumption, :func:`str` will " "return the same value as :func:`repr`. Many values, such as numbers or " "structures like lists and dictionaries, have the same representation using " "either function. Strings, in particular, have two distinct representations." msgstr "" ":func:`str` 関数は値の人間に読める表現を返すためのもので、 :func:`repr` 関数" "はインタープリタに読める (あるいは同値となる構文がない場合は必ず :exc:" "`SyntaxError` になるような) 表現を返すためのものです。人間が読むのに適した特" "定の表現を持たないオブジェクトにおいては、 :func:`str` は :func:`repr` と同じ" "値を返します。数値や、リストや辞書を始めとするデータ構造など、多くの値がどち" "らの関数に対しても同じ表現を返します。一方、文字列は、2つの異なる表現を持って" "います。" #: ../../tutorial/inputoutput.rst:47 msgid "Some examples::" msgstr "例::" #: ../../tutorial/inputoutput.rst:70 msgid "Here are two ways to write a table of squares and cubes::" msgstr "以下に 2 乗と 3 乗の値からなる表を書く二つの方法を示します::" #: ../../tutorial/inputoutput.rst:102 msgid "" "(Note that in the first example, one space between each column was added by " "the way :func:`print` works: by default it adds spaces between its " "arguments.)" msgstr "" "(最初の例で、 :func:`print` の動作により各カラムの間にスペースが一個ずつ追加" "されていることに注意してください。 :func:`print` はデフォルトでは引数間に空白" "を追加します。)" #: ../../tutorial/inputoutput.rst:105 msgid "" "This example demonstrates the :meth:`str.rjust` method of string objects, " "which right-justifies a string in a field of a given width by padding it " "with spaces on the left. There are similar methods :meth:`str.ljust` and :" "meth:`str.center`. These methods do not write anything, they just return a " "new string. If the input string is too long, they don't truncate it, but " "return it unchanged; this will mess up your column lay-out but that's " "usually better than the alternative, which would be lying about a value. " "(If you really want truncation you can always add a slice operation, as in " "``x.ljust(n)[:n]``.)" msgstr "" "この例では、文字列の :meth:`str.rjust` メソッドの使い方を示しています。 :" "meth:`str.rjust` は文字列を指定された幅のフィールド内に右詰めで入るように、左" "に空白を追加します。同様のメソッドとして、 :meth:`str.ljust` と :meth:`str." "center` があります。これらのメソッドは何か出力を行うわけではなく、ただ新しい" "文字列を返します。入力文字列が長すぎる場合、文字列を切り詰めることはせずに値" "をそのまま返します。この仕様のためにカラムのレイアウトが滅茶苦茶になるかもし" "れませんが、嘘の値が代わりに書き出されるよりはましです。(本当に切り詰めを行い" "たいのなら、全てのカラムに ``x.ljust(n)[:n]`` のようにスライス表記を加えるこ" "ともできます。)" #: ../../tutorial/inputoutput.rst:115 msgid "" "There is another method, :meth:`str.zfill`, which pads a numeric string on " "the left with zeros. It understands about plus and minus signs::" msgstr "" "もう一つのメソッド、 :meth:`str.zfill` は、数値文字列の左側をゼロ詰めします。" "このメソッドは正と負の符号を正しく扱います::" #: ../../tutorial/inputoutput.rst:125 msgid "Basic usage of the :meth:`str.format` method looks like this::" msgstr ":meth:`str.format` メソッドの基本的な使い方は次のようなものです::" #: ../../tutorial/inputoutput.rst:130 msgid "" "The brackets and characters within them (called format fields) are replaced " "with the objects passed into the :meth:`str.format` method. A number in the " "brackets can be used to refer to the position of the object passed into the :" "meth:`str.format` method. ::" msgstr "" "括弧とその中の文字(これをフォーマットフィールドと呼びます)は、 :meth:`str." "format` メソッドに渡されたオブジェクトに置換されます。括弧の中の数字は :meth:" "`str.format` メソッドに渡されたオブジェクトの位置を表すのに使えます。 ::" #: ../../tutorial/inputoutput.rst:140 msgid "" "If keyword arguments are used in the :meth:`str.format` method, their values " "are referred to by using the name of the argument. ::" msgstr "" ":meth:`str.format` メソッドにキーワード引数が渡された場合、その値はキーワード" "引数の名前によって参照されます。 ::" #: ../../tutorial/inputoutput.rst:147 msgid "Positional and keyword arguments can be arbitrarily combined::" msgstr "順序引数とキーワード引数を組み合わせて使うこともできます::" #: ../../tutorial/inputoutput.rst:153 msgid "" "``'!a'`` (apply :func:`ascii`), ``'!s'`` (apply :func:`str`) and ``'!r'`` " "(apply :func:`repr`) can be used to convert the value before it is " "formatted::" msgstr "" ":func:`ascii` を適応する ``'!a'`` や :func:`str` を適応する ``'!s'`` や :" "func:`repr` を適応する ``'!r'`` を使って、値をフォーマットする前に変換するこ" "とができます::" #: ../../tutorial/inputoutput.rst:162 msgid "" "An optional ``':'`` and format specifier can follow the field name. This " "allows greater control over how the value is formatted. The following " "example rounds Pi to three places after the decimal." msgstr "" "オプションの ``':'`` とフォーマット指定子を、フィールド名の後ろに付けることが" "できます。フォーマット指定子によって値がどうフォーマットされるかを制御するこ" "とができます。次の例では、円周率πを、小数点以下3桁で丸めてフォーマットしてい" "ます。" #: ../../tutorial/inputoutput.rst:170 msgid "" "Passing an integer after the ``':'`` will cause that field to be a minimum " "number of characters wide. This is useful for making tables pretty. ::" msgstr "" "``':'`` の後ろに整数をつけると、そのフィールドの最低の文字幅を指定できます。" "この機能は綺麗なテーブルを作るのに便利です。 ::" #: ../../tutorial/inputoutput.rst:181 msgid "" "If you have a really long format string that you don't want to split up, it " "would be nice if you could reference the variables to be formatted by name " "instead of by position. This can be done by simply passing the dict and " "using square brackets ``'[]'`` to access the keys ::" msgstr "" "もしも長い書式文字列があり、それを分割したくない場合には、変数を引数の位置で" "はなく変数の名前で参照できるとよいでしょう。これは、辞書を引数に渡して、角括" "弧 ``'[]'`` を使って辞書のキーを参照することで可能です ::" #: ../../tutorial/inputoutput.rst:191 msgid "" "This could also be done by passing the table as keyword arguments with the " "'**' notation. ::" msgstr "table を '**' 記法を使ってキーワード引数として渡す方法もあります。 ::" #: ../../tutorial/inputoutput.rst:198 msgid "" "This is particularly useful in combination with the built-in function :func:" "`vars`, which returns a dictionary containing all local variables." msgstr "" "全てのローカルな変数が入った辞書を返す組み込み関数 :func:`vars` と組み合わせ" "ると特に便利です。" #: ../../tutorial/inputoutput.rst:201 msgid "" "For a complete overview of string formatting with :meth:`str.format`, see :" "ref:`formatstrings`." msgstr "" ":meth:`str.format` による文字列書式設定の完全な解説は、 :ref:`formatstrings` " "を参照してください。" #: ../../tutorial/inputoutput.rst:206 msgid "Old string formatting" msgstr "古い文字列書式設定方法" #: ../../tutorial/inputoutput.rst:208 msgid "" "The ``%`` operator can also be used for string formatting. It interprets the " "left argument much like a :c:func:`sprintf`\\ -style format string to be " "applied to the right argument, and returns the string resulting from this " "formatting operation. For example::" msgstr "" "``%`` 演算子を使って文字列書式設定をする方法もあります。これは、演算子の左側" "の :c:func:`sprintf` スタイルのフォーマット文字列に、演算子の右側の値を適用" "し、その結果の文字列を返します。例えば::" #: ../../tutorial/inputoutput.rst:217 msgid "" "More information can be found in the :ref:`old-string-formatting` section." msgstr "より詳しい情報は :ref:`old-string-formatting` にあります。" #: ../../tutorial/inputoutput.rst:223 msgid "Reading and Writing Files" msgstr "ファイルを読み書きする" #: ../../tutorial/inputoutput.rst:229 msgid "" ":func:`open` returns a :term:`file object`, and is most commonly used with " "two arguments: ``open(filename, mode)``." msgstr "" ":func:`open` は :term:`file object` を返します。大抵、 ``open(filename, " "mode)`` のように二つの引数を伴って呼び出されます。" #: ../../tutorial/inputoutput.rst:241 msgid "" "The first argument is a string containing the filename. The second argument " "is another string containing a few characters describing the way in which " "the file will be used. *mode* can be ``'r'`` when the file will only be " "read, ``'w'`` for only writing (an existing file with the same name will be " "erased), and ``'a'`` opens the file for appending; any data written to the " "file is automatically added to the end. ``'r+'`` opens the file for both " "reading and writing. The *mode* argument is optional; ``'r'`` will be " "assumed if it's omitted." msgstr "" "最初の引数はファイル名の入った文字列です。二つめの引数も文字列で、ファイルを" "どのように使うかを示す数個の文字が入っています。 *mode* は、ファイルが読み出" "し専用なら ``'r'`` 、書き込み専用 (同名の既存のファイルがあれば消去されます) " "なら ``'w'`` とします。 ``'a'`` はファイルを追記用に開きます。ファイルに書き" "込まれた内容は自動的にファイルの終端に追加されます。 ``'r+'`` はファイルを読" "み書き両用に開きます。 *mode* 引数は省略可能で、省略された場合には ``'r'`` で" "あると仮定します。" #: ../../tutorial/inputoutput.rst:250 msgid "" "Normally, files are opened in :dfn:`text mode`, that means, you read and " "write strings from and to the file, which are encoded in a specific " "encoding. If encoding is not specified, the default is platform dependent " "(see :func:`open`). ``'b'`` appended to the mode opens the file in :dfn:" "`binary mode`: now the data is read and written in the form of bytes " "objects. This mode should be used for all files that don't contain text." msgstr "" "通常、ファイルはテキストモード (:dfn:`text mode`) で開かれ、特定のエンコー" "ディングでエンコードされたファイルに対して文字列を読み書きします。エンコー" "ディングが指定されなければ、デフォルトはプラットフォーム依存です (:func:" "`open` を参照してください) 。モードに ``'b'`` をつけるとファイルをバイナリ" "モード (:dfn:`binary mode`) で開き、 byte オブジェクトを読み書きします。テキ" "ストファイル以外のすべてのファイルはバイナリモードを利用するべきです。" #: ../../tutorial/inputoutput.rst:257 msgid "" "In text mode, the default when reading is to convert platform-specific line " "endings (``\\n`` on Unix, ``\\r\\n`` on Windows) to just ``\\n``. When " "writing in text mode, the default is to convert occurrences of ``\\n`` back " "to platform-specific line endings. This behind-the-scenes modification to " "file data is fine for text files, but will corrupt binary data like that in :" "file:`JPEG` or :file:`EXE` files. Be very careful to use binary mode when " "reading and writing such files." msgstr "" "テキストモードの読み取りでは、プラットフォーム固有の行末記号 (Unix では " "``\\n`` 、Windows では ``\\r\\n``) をただの ``\\n`` に変換するのがデフォルト" "の動作です。テキストモードの書き込みでは、 ``\\n`` が出てくる箇所をプラット" "フォーム固有の行末記号に戻すのがデフォルトの動作です。この裏で行われるファイ" "ルデータの変換はテキストファイルには上手く働きますが、 :file:`JPEG` ファイル" "や :file:`EXE` ファイルのようなバイナリデータを破壊する恐れがあります。そのよ" "うなファイルを読み書きする場合には注意して、バイナリモードを使うようにしてく" "ださい。" #: ../../tutorial/inputoutput.rst:265 msgid "" "It is good practice to use the :keyword:`with` keyword when dealing with " "file objects. The advantage is that the file is properly closed after its " "suite finishes, even if an exception is raised at some point. Using :" "keyword:`with` is also much shorter than writing equivalent :keyword:`try`\\ " "-\\ :keyword:`finally` blocks::" msgstr "" "ファイルオブジェクトを扱うときに :keyword:`with` キーワードを使うのは良い習慣" "です。\n" "その利点は、処理中に例外が発生しても必ず最後にファイルをちゃんと閉じることで" "す。\n" ":keyword:`with` を使うと、同じことを :keyword:`try`\\ -\\ :keyword:`finally` " "ブロックを使って書くよりずっと簡潔に書けます::" #: ../../tutorial/inputoutput.rst:276 msgid "" "If you're not using the :keyword:`with` keyword, then you should call ``f." "close()`` to close the file and immediately free up any system resources " "used by it. If you don't explicitly close a file, Python's garbage collector " "will eventually destroy the object and close the open file for you, but the " "file may stay open for a while. Another risk is that different Python " "implementations will do this clean-up at different times." msgstr "" ":keyword:`with` キーワードを使わない場合は、``f.close()`` を呼び出してファイ" "ルを閉じ、そのファイルが使っていたシステムリソースをすぐに解放する必要があり" "ます。\n" "明示的にファイルを閉じなかった場合は、いつかは Python のガベージコレクタがそ" "のファイルオブジェクトを破棄し開かれいていたファイルを閉じますが、しばらくは" "ファイルが開かれたままでいる可能性があります。\n" "他に考えられるリスクは、別の Python の実装ではこの片付け処理が別のタイミング" "で実行されることです。" #: ../../tutorial/inputoutput.rst:284 msgid "" "After a file object is closed, either by a :keyword:`with` statement or by " "calling ``f.close()``, attempts to use the file object will automatically " "fail. ::" msgstr "" ":keyword:`with` 文や ``f.close()`` の呼び出しによって閉じられた後にファイルオ" "ブジェクトを使おうとするとそこで処理が失敗します。::" #: ../../tutorial/inputoutput.rst:298 msgid "Methods of File Objects" msgstr "ファイルオブジェクトのメソッド" #: ../../tutorial/inputoutput.rst:300 msgid "" "The rest of the examples in this section will assume that a file object " "called ``f`` has already been created." msgstr "" "この節の以降の例は、 ``f`` というファイルオブジェクトが既に生成されているもの" "と仮定します。" #: ../../tutorial/inputoutput.rst:303 msgid "" "To read a file's contents, call ``f.read(size)``, which reads some quantity " "of data and returns it as a string (in text mode) or bytes object (in binary " "mode). *size* is an optional numeric argument. When *size* is omitted or " "negative, the entire contents of the file will be read and returned; it's " "your problem if the file is twice as large as your machine's memory. " "Otherwise, at most *size* bytes are read and returned. If the end of the " "file has been reached, ``f.read()`` will return an empty string (``''``). ::" msgstr "" "ファイルの内容を読み出すには、 ``f.read(size)`` を呼び出します。このメソッド" "はある量のデータを読み出して、文字列 (テキストモードの場合) か bytes オブジェ" "クト (バイナリーモードの場合) として返します。 *size* はオプションの数値引数" "です。 *size* が省略されたり負の数であった場合、ファイルの内容全てを読み出し" "て返します。ただし、ファイルがマシンのメモリの二倍の大きさもある場合にはどう" "なるかわかりません。 *size* が負でない数ならば、最大で *size* バイトを読み出" "して返します。ファイルの終端にすでに達していた場合、 ``f.read()`` は空の文字" "列 (``''``) を返します。" #: ../../tutorial/inputoutput.rst:317 msgid "" "``f.readline()`` reads a single line from the file; a newline character " "(``\\n``) is left at the end of the string, and is only omitted on the last " "line of the file if the file doesn't end in a newline. This makes the " "return value unambiguous; if ``f.readline()`` returns an empty string, the " "end of the file has been reached, while a blank line is represented by " "``'\\n'``, a string containing only a single newline. ::" msgstr "" "``f.readline()`` はファイルから 1 行だけを読み取ります。改行文字 (``\\n``) は" "読み出された文字列の終端に残ります。改行が省略されるのは、ファイルが改行で終" "わっていない場合の最終行のみです。これは、戻り値があいまいでないようにするた" "めです; ``f.readline()`` が空の文字列を返したら、ファイルの終端に達したことが" "分かります。一方、空行は ``'\\n'``、すなわち改行 1 文字だけからなる文字列で表" "現されます。 ::" #: ../../tutorial/inputoutput.rst:331 msgid "" "For reading lines from a file, you can loop over the file object. This is " "memory efficient, fast, and leads to simple code::" msgstr "" "ファイルから複数行を読み取るには、ファイルオブジェクトに対してループを書く方" "法があります。この方法はメモリを効率的に使え、高速で、簡潔なコードになりま" "す::" #: ../../tutorial/inputoutput.rst:340 msgid "" "If you want to read all the lines of a file in a list you can also use " "``list(f)`` or ``f.readlines()``." msgstr "" "ファイルのすべての行をリスト形式で読み取りたいなら、``list(f)`` や ``f." "readlines()`` を使うこともできます。" #: ../../tutorial/inputoutput.rst:343 msgid "" "``f.write(string)`` writes the contents of *string* to the file, returning " "the number of characters written. ::" msgstr "" "``f.write(string)`` は、*string* の内容をファイルに書き込み、書き込まれた文字" "数を返します。 ::" #: ../../tutorial/inputoutput.rst:349 msgid "" "Other types of objects need to be converted -- either to a string (in text " "mode) or a bytes object (in binary mode) -- before writing them::" msgstr "" "オブジェクトの他の型は、書き込む前に変換しなければなりません -- 文字列 (テキ" "ストモード) と bytes オブジェクト (バイナリーモード) のいずれかです::" #: ../../tutorial/inputoutput.rst:357 msgid "" "``f.tell()`` returns an integer giving the file object's current position in " "the file represented as number of bytes from the beginning of the file when " "in binary mode and an opaque number when in text mode." msgstr "" "``f.tell()`` は、ファイルオブジェクトのファイル中における現在の位置を示す整数" "を返します。ファイル中の現在の位置は、バイナリモードではファイルの先頭からの" "バイト数で、テキストモードでは不明瞭な値で表されます。" #: ../../tutorial/inputoutput.rst:361 msgid "" "To change the file object's position, use ``f.seek(offset, from_what)``. " "The position is computed from adding *offset* to a reference point; the " "reference point is selected by the *from_what* argument. A *from_what* " "value of 0 measures from the beginning of the file, 1 uses the current file " "position, and 2 uses the end of the file as the reference point. " "*from_what* can be omitted and defaults to 0, using the beginning of the " "file as the reference point. ::" msgstr "" "ファイルオブジェクトの位置を変更するには、``f.seek(offset, from_what)`` を使" "います。ファイル位置は基準点 (reference point) にオフセット値 *offset* を足し" "て計算されます。参照点は *from_what* 引数で選びます。*from_what* の値が 0 な" "らばファイルの 先頭から測り、1 ならば現在のファイル位置を使い、2 ならばファイ" "ルの終端を参照点として使います。*from_what* は省略することができ、デフォルト" "の値は 0、すなわち参照点としてファイルの先頭を使います。 ::" #: ../../tutorial/inputoutput.rst:380 msgid "" "In text files (those opened without a ``b`` in the mode string), only seeks " "relative to the beginning of the file are allowed (the exception being " "seeking to the very file end with ``seek(0, 2)``) and the only valid " "*offset* values are those returned from the ``f.tell()``, or zero. Any other " "*offset* value produces undefined behaviour." msgstr "" "テキストファイル (mode 文字列に ``b`` を付けなかった場合) では、ファイルの先" "頭からの相対位置に対するシークだけが許可されています (例外として、``seek(0, " "2)`` でファイルの末尾へのシークは可能です)。また、唯一の有効な *offset* 値は " "``f.tell()`` から返された値か、0 のいずれかです。それ以外の *offset* 値は未定" "義の振る舞いを引き起こします。" #: ../../tutorial/inputoutput.rst:386 msgid "" "File objects have some additional methods, such as :meth:`~file.isatty` and :" "meth:`~file.truncate` which are less frequently used; consult the Library " "Reference for a complete guide to file objects." msgstr "" "ファイルオブジェクトには、他にも :meth:`~file.isatty` や :meth:`~file." "truncate` といった、あまり使われないメソッドがあります。ファイルオブジェクト" "についての完全なガイドは、ライブラリリファレンスを参照してください。" #: ../../tutorial/inputoutput.rst:394 msgid "Saving structured data with :mod:`json`" msgstr ":mod:`json` による構造化されたデータの保存" #: ../../tutorial/inputoutput.rst:398 msgid "" "Strings can easily be written to and read from a file. Numbers take a bit " "more effort, since the :meth:`read` method only returns strings, which will " "have to be passed to a function like :func:`int`, which takes a string like " "``'123'`` and returns its numeric value 123. When you want to save more " "complex data types like nested lists and dictionaries, parsing and " "serializing by hand becomes complicated." msgstr "" "文字列は簡単にファイルに書き込んだり、ファイルから読み込んだりすることができ" "ます。数値の場合には少し努力が必要です。というのも、:meth:`read` メソッドは文" "字列しか返さないため、:func:`int` のような関数にその文字列を渡して、たとえば" "文字列 ``'123'`` のような文字列を、数値 123 に変換しなくてはならないからで" "す。もっと複雑なデータ型、例えば入れ子になったリストや辞書の場合、手作業での" "パースやシリアライズは困難になります。" #: ../../tutorial/inputoutput.rst:405 msgid "" "Rather than having users constantly writing and debugging code to save " "complicated data types to files, Python allows you to use the popular data " "interchange format called `JSON (JavaScript Object Notation) `_. The standard module called :mod:`json` can take Python data " "hierarchies, and convert them to string representations; this process is " "called :dfn:`serializing`. Reconstructing the data from the string " "representation is called :dfn:`deserializing`. Between serializing and " "deserializing, the string representing the object may have been stored in a " "file or data, or sent over a network connection to some distant machine." msgstr "" "ユーザが毎回コードを書いたりデバッグしたりして複雑なデータ型をファイルに保存" "するかわりに、Python では一般的なデータ交換形式である `JSON (JavaScript " "Object Notation) `_ を使うことができます。この標準モジュー" "ル :mod:`json` は、Python のデータ 階層を取り、文字列表現に変換します。この処" "理は :dfn:`シリアライズ (serializing)` と呼ばれます。文字列表現からデータを再" "構築することは、:dfn:`デシリアライズ (deserializing)` と呼ばれます。シリアラ" "イズされてからデシリアライズされるまでの間に、オブジェクトの文字列表現はファ" "イルやデータの形で保存したり、ネットワークを通じて離れたマシンに送ったりする" "ことができます。" #: ../../tutorial/inputoutput.rst:416 msgid "" "The JSON format is commonly used by modern applications to allow for data " "exchange. Many programmers are already familiar with it, which makes it a " "good choice for interoperability." msgstr "" "JSON 形式は現代的なアプリケーションでデータをやりとりする際によく使われます。" "多くのプログラマーが既に JSON に詳しいため、JSON はデータの相互交換をする場合" "の良い選択肢です。" #: ../../tutorial/inputoutput.rst:420 msgid "" "If you have an object ``x``, you can view its JSON string representation " "with a simple line of code::" msgstr "" "オブジェクト ``x`` があり、その JSON 形式の文字列表現を見るには、単純な1行の" "コードを書くだけです::" #: ../../tutorial/inputoutput.rst:427 msgid "" "Another variant of the :func:`~json.dumps` function, called :func:`~json." "dump`, simply serializes the object to a :term:`text file`. So if ``f`` is " "a :term:`text file` object opened for writing, we can do this::" msgstr "" ":func:`~json.dumps` に似た関数に、:func:`~json.dump` があり、こちらは単純にオ" "ブジェクトを :term:`text file` にシリアライズします。``f`` が書き込み用に開か" "れた :term:`text file` だとすると、次のように書くことができます::" #: ../../tutorial/inputoutput.rst:433 msgid "" "To decode the object again, if ``f`` is a :term:`text file` object which has " "been opened for reading::" msgstr "" "逆にデシリアライズするには、``f`` が読み込み用に開かれた :term:`text file` だ" "とすると、次のようになります::" #: ../../tutorial/inputoutput.rst:438 msgid "" "This simple serialization technique can handle lists and dictionaries, but " "serializing arbitrary class instances in JSON requires a bit of extra " "effort. The reference for the :mod:`json` module contains an explanation of " "this." msgstr "" "このような単純なシリアライズをする手法は、リストや辞書を扱うことはできます" "が、任意のクラス・インスタンスを JSON にシリアライズするにはもう少し努力しな" "くてはなりません。:mod:`json` モジュールのリファレンスにこれについての解説が" "あります。" #: ../../tutorial/inputoutput.rst:444 msgid ":mod:`pickle` - the pickle module" msgstr ":mod:`pickle` - pickle モジュール" #: ../../tutorial/inputoutput.rst:446 msgid "" "Contrary to :ref:`JSON `, *pickle* is a protocol which allows the " "serialization of arbitrarily complex Python objects. As such, it is " "specific to Python and cannot be used to communicate with applications " "written in other languages. It is also insecure by default: deserializing " "pickle data coming from an untrusted source can execute arbitrary code, if " "the data was crafted by a skilled attacker." msgstr "" ":ref:`JSON ` とは対照的に、 *pickle* は任意の複雑な Python オブジェ" "クトをシリアライズ可能なプロトコルです。しかし、Python に特有のプロトコルで、" "他の言語で記述されたアプリケーションと通信するのには使えません。さらに、デ" "フォルトでは安全でなく、信頼できない送信元から送られてきた、スキルのある攻撃" "者によって生成された pickle データをデシリアライズすると、攻撃者により任意の" "コードが実行されてしまいます。"