216 lines
4.6 KiB
Plaintext
216 lines
4.6 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"pycharm": {
|
|
"name": "#%% md\n"
|
|
},
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
}
|
|
},
|
|
"source": [
|
|
"# Software Entwicklung \n",
|
|
"\n",
|
|
"## Kapitel 9: IO\n",
|
|
"\n",
|
|
"### 9.4 Dateien lesen\n",
|
|
"\n",
|
|
"Bei großen Dateien sollte vom vollständigen Einlesen mittels\n",
|
|
"<code>read</code> Abstand genommen werden, weil dann\n",
|
|
"der gesamte Dateiinhalt im Speicher gehalten werden muss.\n",
|
|
"Vielmehr sollte in diesem Fall der Inhalt sukzessive eingelesen\n",
|
|
"werden."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"pycharm": {
|
|
"name": "#%% md\n"
|
|
},
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
}
|
|
},
|
|
"source": [
|
|
"Zu diesem Zweck kann <code>read</code> mit einem Parameter\n",
|
|
"aufgerufen werden, der die maximale Anzahl Bytes angibt,\n",
|
|
"die gelesen werden sollen."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"pycharm": {
|
|
"name": "#%%\n"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"with open(\"091a Textdatei\", \"r\") as f:\n",
|
|
" block_size = 10\n",
|
|
" block = f.read(block_size)\n",
|
|
"\n",
|
|
" while len(block)>0:\n",
|
|
" print(block, end='*')\n",
|
|
" block = f.read(block_size)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
}
|
|
},
|
|
"source": [
|
|
"Man kann sich das schrittweise Einlesen der Datei mit Hilfe\n",
|
|
"eines Schreib-/Lesekopfs vorstellen, der sich\n",
|
|
"entlang eines Stroms von Bytes bzw. Zeichen bewegt.\n",
|
|
"Jeder Lesevorgang bewegt den Kopf um die Anzahl der\n",
|
|
"gelesenen Zeichen vorwärts. Die Position des Kopfs\n",
|
|
"innerhalb der Datei kann mittels <code>tell</code>\n",
|
|
"ermittelt werden."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"pycharm": {
|
|
"name": "#%%\n"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"with open(\"091a Textdatei\", \"r\") as f:\n",
|
|
" block_size = 10\n",
|
|
" block = f.read(block_size)\n",
|
|
"\n",
|
|
" while len(block)>0:\n",
|
|
" print(block, end='')\n",
|
|
" pos = f.tell()\n",
|
|
" print(f\"<{pos}>\", end='')\n",
|
|
" block = f.read(block_size)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"pycharm": {
|
|
"name": "#%% md\n"
|
|
},
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
}
|
|
},
|
|
"source": [
|
|
"Die Position des Schreib-/Lesekopfs lässt sich auch\n",
|
|
"durch die Methode <code>seek</code> verändern."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"pycharm": {
|
|
"name": "#%%\n"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"with open(\"091a Textdatei\", \"r\") as f:\n",
|
|
" f.seek(110)\n",
|
|
" print(f.read())"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"pycharm": {
|
|
"name": "#%% md\n"
|
|
},
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
}
|
|
},
|
|
"source": [
|
|
"Textdateien sind i.d.R. in Zeilen aufgeteilt, die jeweils\n",
|
|
"mit einem Zeilenendezeichen abschließen. Die Methode\n",
|
|
"<code>readline</code> liest aus einer Textdatein\n",
|
|
"die Daten bis zum nächsten Zeilenende."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"pycharm": {
|
|
"name": "#%%\n"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"with open(\"091a Textdatei\", \"r\") as f:\n",
|
|
" line = f.readline()\n",
|
|
" while len(line)>0:\n",
|
|
" print(line, end='')\n",
|
|
" line = f.readline()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
}
|
|
},
|
|
"source": [
|
|
"Diese häufig benötigte Variante des Lesens einer Textdatei\n",
|
|
"kann in Python auch mittels einer <code>for</code>-Schleife\n",
|
|
"realisiert werden."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"pycharm": {
|
|
"name": "#%%\n"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"with open(\"091a Textdatei\", \"r\") as f:\n",
|
|
" for line in f:\n",
|
|
" print(line, end='')"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"celltoolbar": "Slideshow",
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.9.9"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 1
|
|
}
|