Read

Read[stream]
reads one expression from an input stream and returns the expression.

Read[stream, type]
reads one object of the specified type.

Read[stream, {type1, type2, ...}]
reads a sequence of objects of the specified types.

Details and OptionsDetails and Options

  • Possible types to read are:
  • Bytesingle byte, returned as an integer code
    Charactersingle character, returned as a one-character string
    Expressioncomplete Mathematica expression
    Numberinteger or an approximate number, given in "E" format
    Realapproximate number, given in "E" format
    Recordsequence of characters delimited by record separators
    Stringstring terminated by a newline
    Wordsequence of characters delimited by word separators
  • Objects of type Real can be given in the scientific notation format used by languages such as C and Fortran, as well as in standard Mathematica format. A form like or as well as can be used to represent the number . Objects read as type Real are always returned as approximate numbers. Objects read as type Number are returned as integers if they contain no explicit decimal points.
  • The following options can be given:
  • NullRecordsFalsewhether to assume a null record between repeated record separators
    NullWordsFalsewhether to assume a null word between repeated word separators
    RecordSeparators{"\r\n","\n","\r"}separators allowed between records
    TokenWords{}words taken as delimiters
    WordSeparators{" ","\t"}separators allowed between words
  • Objects of type String must be terminated by newlines.
  • You can specify any nested list of types for Read to look for. Each successive object read will be placed in the next position in the list structure. A depth-first traversal of the list structure is used.
  • Read[stream, {Number, Number}] reads a pair of numbers from an input stream, and gives the result as a two-element list.
  • Read[stream, {{Number, Number}, {Number, Number}}] reads a 2×2 matrix, going through each column, then each row.
  • You can use Read to get objects to insert into any expression structure, not necessarily a list. Example: Read[stream, Hold[Expression]] gets an expression and places it inside Hold.
  • The first argument to Read can be InputStream["name", n], or simply if there is only one open input stream with the specified name.
  • You can open a file or pipe to get an InputStream object using OpenRead.
  • There is always a "current point" maintained for any stream. When you read an object from a stream, the current point is left after the input you read. Successive calls to Read can therefore be used to read successive objects in a stream such as a file.
  • Read returns EndOfFile for each object you try to read after you have reached the end of a file.
  • Read returns $Failed if it cannot read an object of the type you requested.
  • If there is a syntax error in a Mathematica expression that you try to read, then Read leaves the current point at the position of the error, and returns $Failed.

ExamplesExamplesopen allclose all

Basic Examples (2)Basic Examples (2)

Open a stream:

In[1]:=
Click for copyable input
Out[1]=

Read expressions from the stream:

In[2]:=
Click for copyable input
Out[2]=

Open a stream:

In[1]:=
Click for copyable input
Out[1]=

Read numbers from the stream:

In[2]:=
Click for copyable input
Out[2]=

Read words and numbers:

In[3]:=
Click for copyable input
Out[3]=

Close the stream:

In[4]:=
Click for copyable input
Out[4]=
New in 1 | Last modified in 3
New to Mathematica? Find your learning path »
Have a question? Ask support »