{ "metadata": { "name": "", "signature": "sha256:8f5b1919f26fe408ffda8eebc2fb723804db50fa66e77ae5872cbd54e9722119" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "***\n", "# 9. \ud30c\uc77c\n", "***\n", "***\n", "- \ud30c\uc77c\uc744 \uc5f4\uc5b4\uc11c \uc77d\uace0, \uc4f0\uace0, \ub367\ubd99\uc774\ub294 \ubc29\ubc95\n", " - open(filename, mode) \ub0b4\uc7a5 \ud568\uc218\ub85c filename \uc774\ub984\uc744 \uc9c0\ub2cc file \uac1d\uccb4\ub97c \uc5bb\ub294\ub2e4. \n", " - file() \uc740 \ub0b4\uc7a5 \ud568\uc218\uac00 \uc544\ub2c8\ub77c file \ud074\ub798\uc2a4\uc758 \uc0dd\uc131\uc790\n", " - \ud30c\uc77c\uc744 \uc5f4\uae30 \uc704\ud558\uc5ec file() \uc0dd\uc131\uc790 \ud568\uc218 \uc0ac\uc6a9\uc740 \ube44\ucd94\ucc9c\n", " - https://docs.python.org/2/library/functions.html#file\n", " - http://stackoverflow.com/questions/112970/python-when-to-use-file-vs-open\n", " - \uc5bb\uc5b4\uc9c4 \ud30c\uc77c \uac1d\uccb4\uc5d0\uc11c \uc790\ub8cc\ub97c \uc77d\uac70\ub098, \uc4f0\uac70\ub098, \ub367\ubd99\uc774\ub294 \uc791\uc5c5 \uc218\ud589\n", " - \ubaa8\ub4e0 \uc791\uc5c5\uc774 \ub05d\ub098\uba74 close()\ub97c \ud638\ucd9c\ud558\uc5ec \uc791\uc5c5 \ud504\ub85c\uc138\uc2a4\uc758 \uc790\uc6d0 \uc810\uc720 \ud574\uc81c" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 01 \ud30c\uc77c \uc4f0\uae30\n", "***" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import os\n", "\n", "print os.getcwd()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "/Users/yhhan/git/ipython\n" ] } ], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "s = \"\"\"\n", "Its power: Python developers typically report \n", "they are able to develop applications in a half\n", "to a tenth the amount of time it takes them to do\n", "the same work in such languages as C.\n", "\"\"\"\n", "f = open('t.txt', 'w')\n", "f.write(s) #\ubb38\uc790\uc5f4\uc744 \ud30c\uc77c\uc5d0 \uae30\ub85d\n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 02 \ud30c\uc77c \uc77d\uae30\n", "***" ] }, { "cell_type": "code", "collapsed": false, "input": [ "f = file('t.txt') # f = open('t.txt', 'r')\uacfc \ub3d9\uc77c\n", "s = f.read()\n", "print s" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Its power: Python developers typically report \n", "they are able to develop applications in a half\n", "to a tenth the amount of time it takes them to do\n", "the same work in such languages as C.\n", "\n" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- close()\uc744 \ub9c8\uc9c0\ub9c9\uc5d0 \ud638\ucd9c\ud558\uc9c0 \uc54a\uc73c\uba74 \ud574\ub2f9 file \uac1d\uccb4\uac00 \ub354\uc774\uc0c1 \uc0ac\uc6a9\ub418\uc9c0 \uc54a\uac70\ub098 \ub2e4\ub978 \uac12\uc73c\ub85c \uce58\ud658\ub420 \ub54c \uc790\ub3d9\uc73c\ub85c close()\uac00 \ubd88\ub9ac\uc6cc\uc9c4\ub2e4.\n", "- \ud558\uc9c0\ub9cc \uba85\uc2dc\uc801\uc73c\ub85c close()\ub97c \ud638\ucd9c\ud558\ub294 \uac83\uc744 \uad8c\uc7a5\ud568" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 03 \ub77c\uc778 \ub2e8\uc704\ub85c \ud30c\uc77c \uc77d\uae30\n", "***\n", "- \ucd1d 4\uac00\uc9c0 \ubc29\ubc95 \uc874\uc7ac\n", " - \ud30c\uc77c \uac1d\uccb4\uc758 \ubc18\ubcf5\uc790(iterator) \uc774\uc6a9\ud558\uae30\n", " - readline(): \ud55c\ubc88\uc5d0 \ud55c\uc904\uc529 \uc77d\ub294\ub2e4.\n", " - readlines(): \ud30c\uc77c \uc804\uccb4\ub97c \ub77c\uc778 \ub2e8\uc704\ub85c \ub04a\uc5b4\uc11c \ub9ac\uc2a4\ud2b8\uc5d0 \uc800\uc7a5\ud55c\ub2e4.\n", " - xreadlines(): readlines()\uacfc \uc720\uc0ac\ud558\uc9c0\ub9cc \ud30c\uc77c \uc804\uccb4\ub97c \ud55c\uaebc\ubc88\uc5d0 \uc77d\uc9c0 \uc54a\uace0, \uc0c1\ud669\ubcc4\ub85c \ud544\uc694\ud55c \ub77c\uc778\ub9cc \uc77d\ub294\ub2e4. \ub300\uc6a9\ub7c9\uc758 \ud30c\uc77c\uc744 for \ubb38 \ub4f1\uc73c\ub85c \ub77c\uc778 \ub2e8\uc704\ub85c \uc77d\uc744 \ub54c \ud6a8\uc728\uc801\uc774\ub2e4. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud30c\uc77c \uac1d\uccb4\uc758 \ubc18\ubcf5\uc790(iterator) \uc0ac\uc6a9\n", " - \ud30c\uc77c \uac1d\uccb4\uc758 \ubc18\ubcf5\uc790\ub294 \uac01 \ub77c\uc778\ubcc4\ub85c \ub0b4\uc6a9\uc744 \uc77d\uc5b4\uc624\ub3c4\ub85d \uc124\uc815\ub418\uc5b4 \uc788\uc74c\n", " - \ud30c\uc77c\uc744 \ub77c\uc778\ubcc4\ub85c \uc77d\ub294 \ubc29\ubc95 \uc911 \uac00\uc7a5 \ud6a8\uacfc\uc801\uc784" ] }, { "cell_type": "code", "collapsed": false, "input": [ "f = open('t.txt')\n", "i = 1\n", "for line in f:\n", " print i, \":\", line,\n", " i += 1\n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1 : \n", "2 : Its power: Python developers typically report \n", "3 : they are able to develop applications in a half\n", "4 : to a tenth the amount of time it takes them to do\n", "5 : the same work in such languages as C.\n" ] } ], "prompt_number": 32 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- readline() \uc0ac\uc6a9" ] }, { "cell_type": "code", "collapsed": false, "input": [ "f = open('t.txt')\n", "line = f.readline()\n", "i = 1\n", "while line:\n", " print i, \":\", line,\n", " line = f.readline()\n", " i += 1\n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1 : \n", "2 : Its power: Python developers typically report \n", "3 : they are able to develop applications in a half\n", "4 : to a tenth the amount of time it takes them to do\n", "5 : the same work in such languages as C.\n" ] } ], "prompt_number": 33 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- readlines() \uc0ac\uc6a9\n", " - \uba54\ubaa8\ub9ac\uc5d0 \uac01 \ub77c\uc778\uc744 \ubaa8\ub450 \uc77d\uc5b4 \ub4e4\uc5b4\uc640\uc11c \ub9ac\uc2a4\ud2b8\ub85c \uc800\uc7a5\ud568" ] }, { "cell_type": "code", "collapsed": false, "input": [ "f = open('t.txt')\n", "print f.readlines()\n", "print\n", "\n", "f.seek(0)\n", "i = 1\n", "for line in f.readlines():\n", " print i, \":\", line,\n", " i += 1\n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['\\n', 'Its power: Python developers typically report \\n', 'they are able to develop applications in a half\\n', 'to a tenth the amount of time it takes them to do\\n', 'the same work in such languages as C.\\n']\n", "\n", "1 : \n", "2 : Its power: Python developers typically report \n", "3 : they are able to develop applications in a half\n", "4 : to a tenth the amount of time it takes them to do\n", "5 : the same work in such languages as C.\n" ] } ], "prompt_number": 34 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- xreadlines() \uc0ac\uc6a9" ] }, { "cell_type": "code", "collapsed": false, "input": [ "f = open('t.txt')\n", "print f\n", "print f.xreadlines()\n", "print\n", "\n", "f.seek(0)\n", "i = 1\n", "for line in f.xreadlines():\n", " print i, \":\", line,\n", " i += 1\n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n", "\n", "\n", "1 : \n", "2 : Its power: Python developers typically report \n", "3 : they are able to develop applications in a half\n", "4 : to a tenth the amount of time it takes them to do\n", "5 : the same work in such languages as C.\n" ] } ], "prompt_number": 35 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 04 \ub77c\uc778 \ub2e8\uc704\ub85c \ud30c\uc77c \uc4f0\uae30\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- writelines(): \ub9ac\uc2a4\ud2b8 \uc548\uc5d0 \uc788\ub294 \uac01 \ubb38\uc790\uc5f4\uc744 \uc5f0\uc18d\ud574\uc11c \ucd9c\ub825\ud55c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "lines = ['first line\\n', 'second line\\n', 'third line\\n']\n", "f = open('t1.txt', 'w+')\n", "f.writelines(lines)\n", "\n", "f.seek(0)\n", "print f.read()\n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "first line\n", "second line\n", "third line\n", "\n" ] } ], "prompt_number": 37 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- write()\ub97c \uc774\uc6a9\ud574\uc11c \uc704\uc640 \ub3d9\uc77c\ud55c \ud6a8\uacfc\ub97c \uc904 \uc218\ub3c4 \uc788\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "lines = ['first line\\n', 'second line\\n', 'third line\\n']\n", "f = open('t1.txt', 'w')\n", "f.write(''.join(lines))\n", "\n", "f = open('t1.txt') #\uc77d\uae30\n", "print f.read()\n", "print f.read()\n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "first line\n", "second line\n", "third line\n", "\n", "\n" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- write() \uc774\uc6a9\ud558\uc5ec \uc5ec\ub7ec \ubb38\uc790\uc5f4\uc744 \uac01 \ub77c\uc778\ubcc4\ub85c \ucd9c\ub825\ud558\ub294 \uac00\uc7a5 \uc88b\uc740 \ubc29\ubc95" ] }, { "cell_type": "code", "collapsed": false, "input": [ "lines = ['first line', 'second line', 'third line']\n", "f = open('t1.txt', 'w+')\n", "f.write('\\n'.join(lines))\n", "\n", "f.seek(0)\n", "print f.read()\n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "first line\n", "second line\n", "third line\n" ] } ], "prompt_number": 39 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### \uc608\uc81c1 - \ud14d\uc2a4\ud2b8 \ud30c\uc77c t.txt\uc758 \ub2e8\uc5b4 \uc218\ub97c \ucd9c\ub825\ud558\ub294 \ud504\ub85c\uadf8\ub7a8\uc744 \uc791\uc131\ud558\ub77c. \uc5ec\uae30\uc11c \ub2e8\uc5b4\ub780, \uacf5\ubc31\uc73c\ub85c \ubd84\ub9ac\ub41c \ubb38\uc790\uc758 \ubaa8\uc784\uc744 \ub73b\ud55c\ub2e4." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud574\ubc95 1" ] }, { "cell_type": "code", "collapsed": false, "input": [ "f = open('t.txt')\n", "s = f.read()\n", "n = len(s.split())\n", "print n\n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "35\n" ] } ], "prompt_number": 40 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud574\ubc95 2: \ucf54\ub4dc\ub7c9\uc744 \uc904\uc778 \ubc29\ubc95" ] }, { "cell_type": "code", "collapsed": false, "input": [ "n = len(open('t.txt').read().split())\n", "print n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "35\n" ] } ], "prompt_number": 42 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### \uc608\uc81c2 - \ud14d\uc2a4\ud2b8 \ud30c\uc77c t.txt\uc758 \ub77c\uc778 \uc218\ub97c \ucd9c\ub825\ud558\ub294 \ud504\ub85c\uadf8\ub7a8\uc744 \uc791\uc131\ud558\ub77c." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud574\ubc95 1" ] }, { "cell_type": "code", "collapsed": false, "input": [ "f = open('t.txt')\n", "s = f.read()\n", "print s.count('\\n')\n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "5\n" ] } ], "prompt_number": 44 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud574\ubc95 2" ] }, { "cell_type": "code", "collapsed": false, "input": [ "f = open('t.txt')\n", "print len(f.readlines())\n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "5\n" ] } ], "prompt_number": 45 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud574\ubc95 3" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print len(open('t.txt').readlines())" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "5\n" ] } ], "prompt_number": 46 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud574\ubc95 4" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print open('t.txt').read().count('\\n')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "5\n" ] } ], "prompt_number": 47 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### \uc608\uc81c3 - \ud14d\uc2a4\ud2b8 \ud30c\uc77c t.txt\uc758 \ubb38\uc790 \uc218\ub97c \ucd9c\ub825\ud558\ub294 \ud504\ub85c\uadf8\ub7a8\uc744 \uc791\uc131\ud558\ub77c." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud574\ubc95 1" ] }, { "cell_type": "code", "collapsed": false, "input": [ "f = open('t.txt')\n", "print len(f.read())" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "184\n" ] } ], "prompt_number": 48 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud574\ubc95 2" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import os\n", "os.path.getsize('t.txt')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 49, "text": [ "184" ] } ], "prompt_number": 49 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc708\ub3c4\uc6b0\uc988\uc5d0\uc11c \uc218\ud589\ud558\uba74 os.path.getsize('t.txt')\uac00 \ub77c\uc778\uc218\ub9cc\ud07c \ub354 \ud07c\n", " - \uc774\uc720\n", " - \ub9ac\ub205\uc2a4\uc640 Mac\uc5d0\uc11c\ub294 \ub77c\uc778 \uad6c\ubd84 \uc81c\uc5b4 \ubb38\uc790\ub85c '\\012' \ud55c \ubb38\uc790\ub97c \uc0ac\uc6a9 \n", " - \uc708\ub3c4\uc6b0\uc988\uc5d0\uc11c\ub294 \ub77c\uc778\uc744 \uad6c\ubd84\ud558\ub294 \uc81c\uc5b4 \ubb38\uc790\ub85c '\\015\\012' \ub450 \uac1c\uc758 \ubb38\uc790\ub97c \uc0ac\uc6a9\ud568" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import os\n", "os.linesep" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 53, "text": [ "'\\n'" ] } ], "prompt_number": 53 }, { "cell_type": "markdown", "metadata": {}, "source": [ "![image](images/win_os_linesep.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 05 \ud30c\uc77c\uc5d0\uc11c \uc6d0\ud558\ub294 \ub9cc\ud07c\uc758 \ubb38\uc790 \uc77d\uae30\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- read() \uba54\uc18c\ub4dc\uc5d0 \uc77d\uae30 \uc6d0\ud558\ub294 \ubb38\uc790 \uac1c\uc218\ub97c \uc9c0\uc815\ud568" ] }, { "cell_type": "code", "collapsed": false, "input": [ "f = open('t.txt')\n", "f.read(10)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 1, "text": [ "'\\nIts power'" ] } ], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "f.read(10)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 2, "text": [ "': Python d'" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 06 \ud30c\uc77c \ucc98\ub9ac \ubaa8\ub4dc\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 6-1 \ud30c\uc77c \ucc98\ub9ac \ubaa8\ub4dc\uc758 \uc885\ub958\n", "- open \ub0b4\uc7a5 \ud568\uc218\uc758 \ub450\ubc88\uc9f8 \uc778\uc790 mode \uc124\uba85\n", " - \ub450\ubc88\uc9f8 \uc778\uc790 mode \uc0dd\ub7b5\uc2dc\uc5d0\ub294 \uc77d\uae30 \uc804\uc6a9(r) \ubaa8\ub4dc\ub85c \uc124\uc815\n", " \n", "| Mode | \uac04\ub2e8 \uc124\uba85 | \uc790\uc138\ud55c \uc124\uba85\n", "|--------|-----------------------------|------------|\n", "| 'r' | \uc77d\uae30 \uc804\uc6a9(\uae30\ubcf8 \ubaa8\ub4dc) | Open text file for reading. The stream is positioned at the beginning of the file.|\n", "| 'w' | \uc4f0\uae30 \uc804\uc6a9(\uae30\uc874 \ud30c\uc77c \ub0b4\uc6a9 \uc0ad\uc81c) | Truncate file to zero length or create text file for writing. The stream is positioned at the beginning of the file. |\n", "| 'a' | \ud30c\uc77c \ub05d\uc5d0 \ucd94\uac00(\uc4f0\uae30 \uc804\uc6a9) | Open for writing. The file is created if it does not exist. The stream is positioned at the end of the file. Subsequent writes to the file will always end up at the then current end of file.|\n", "| 'r+' | \uc77d\uace0 \uc4f0\uae30 | Open for reading and writing. The stream is positioned at the beginning of the file. |\n", "| 'w+' | \uc77d\uace0 \uc4f0\uae30(\uae30\uc874 \ud30c\uc77c \ub0b4\uc6a9 \uc0ad\uc81c) | Open for reading and writing. The file is created if it does not exist, otherwise it is truncated. The stream is positioned at the beginning of the file.|\n", "| 'a+' | \ud30c\uc77c \ub05d\uc5d0 \ucd94\uac00(\uc77d\uae30\ub3c4 \uac00\ub2a5) | Open for reading and writing. The file is created if it does not exist. The stream is positioned at the end of the file. Subsequent writes to the file will always end up at the then current end of file. |\n", "\n", "\n", " - \uc774\uc9c4 \ud30c\uc77c\ub85c \uc800\uc7a5\uc744 \uc704\ud574\uc11c\ub294 \uc544\ub798 \ubaa8\ub4dc \uc0ac\uc6a9\n", "\n", "| Mode | \uac04\ub2e8 \uc124\uba85 |\n", "|--------|-----------------------------|\n", "| 'rb' | \uc774\uc9c4 \ud30c\uc77c \uc77d\uae30 \uc804\uc6a9 |\n", "| 'wb' | \uc774\uc9c4 \ud30c\uc77c \uc4f0\uae30 \uc804\uc6a9(\uae30\uc874 \ud30c\uc77c \ub0b4\uc6a9 \uc0ad\uc81c) |\n", "| 'ab' | \uc774\uc9c4 \ud30c\uc77c \ub05d\uc5d0 \ucd94\uac00(\uc4f0\uae30 \uc804\uc6a9) |\n", "| 'rb+' | \uc774\uc9c4 \ud30c\uc77c \uc77d\uace0 \uc4f0\uae30 |\n", "| 'wb+' | \uc774\uc9c4 \ud30c\uc77c \uc77d\uace0 \uc4f0\uae30(\uae30\uc874 \ud30c\uc77c \ub0b4\uc6a9 \uc0ad\uc81c) |\n", "| 'ab+' | \uc774\uc9c4 \ud30c\uc77c \ub05d\uc5d0 \ucd94\uac00(\uc77d\uae30\ub3c4 \uac00\ub2a5) |\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 6-2 \ud30c\uc77c \ucd94\uac00\uc758 \uc608" ] }, { "cell_type": "code", "collapsed": false, "input": [ "f = open('removeme.txt', 'w') #\uc6b0\uc120 \ud30c\uc77c\uc744 \uc0dd\uc131\ud558\uc790.\n", "f.write('first line\\n')\n", "f.write('second line\\n')\n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "f = open('removeme.txt', 'a') #\ud30c\uc77c \ucd94\uac00 \ubaa8\ub4dc\ub85c \uc624\ud508\n", "f.write('third line\\n')\n", "f.close()\n", "\n", "f = open('removeme.txt') #\uc77d\uae30\n", "print f.read()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "first line\n", "second line\n", "third line\n", "\n" ] } ], "prompt_number": 32 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 07 \uc784\uc758 \uc811\uadfc \ud30c\uc77c\n", "***\n", "- \ud30c\uc77c \ub0b4 \ud3ec\uc778\ud130 (pointer)\n", " - \ud30c\uc77c \ub0b4\uc5d0\uc11c \ud604\uc7ac \uc704\uce58\ub97c \uac00\ub9ac\ud0a4\uace0 \uc788\uc74c\n", "- \ud30c\uc77c \uc811\uadfc \ubc29\ubc95\n", " - \uc21c\ucc28 \uc811\uadfc (\uae30\ubcf8 \ubc29\uc2dd): \ud30c\uc77c\uc744 \uc55e\uc5d0\uc11c \ubd80\ud130 \uc21c\ucc28\uc801\uc73c\ub85c \uc77d\uace0 \uc4f0\ub294 \ubc29\uc2dd\n", " - \uc784\uc758 \uc811\uadfc: \ud30c\uc77c \ub0b4 \uc784\uc758 \uc704\uce58\uc5d0\uc11c \uc77d\uace0 \uc4f0\ub294 \ubc29\uc2dd\n", "- \uc784\uc758 \uc811\uadfc\uc744 \uc704\ud55c file \uac1d\uccb4 \ud3ec\uc778\ud130 (pointer) \uad00\ub828 \uba54\uc18c\ub4dc\n", " - seek(n): \ud30c\uc77c\uc758 \uac00\uc7a5 \uccab\ubc88\uc9f8 \uc704\uce58\uc5d0\uc11c n\ubc88\uc9f8 \ubc14\uc774\ud2b8\ub85c \ud3ec\uc778\ud130 \uc774\ub3d9\n", " - seek(n, 1): \ud604\uc7ac \ud3ec\uc778\ud130 \uc704\uce58\uc5d0\uc11c n\ubc14\uc774\ud2b8 \ud3ec\uc778\ud130 \uc774\ub3d9 (n\uc774 \uc591\uc218\uc774\uba74 \ub4a4\ucabd\uc73c\ub85c, n\uc774 \uc74c\uc218\uc774\uba74 \uc55e\ucabd\uc73c\ub85c \uc774\ub3d9)\n", " - seek(n, 2): \ud30c\uc77c\uc758 \uac00\uc7a5 \ub9c8\uc9c0\ub9c9 \uc704\uce58\uc5d0\uc11c n\ubc88\uc9f8 \ubc14\uc774\ud2b8\ub85c \ud3ec\uc778\ud130 \uc774\ub3d9 (n\uc740 \ubcf4\ud1b5 \uc74c\uc218)\n", " - tell(): \ud30c\uc77c \ub0b4 \ud604\uc7ac \ud3ec\uc778\ud130 \uc704\uce58\ub97c \ubc18\ud658" ] }, { "cell_type": "code", "collapsed": false, "input": [ "name = 't.txt' \n", "f = open(name, 'w+') # \uc77d\uace0 \uc4f0\uae30\ub85c \uc624\ud508, \ub2e8, \ud30c\uc77c\uc774 \uc774\ubbf8 \uc874\uc7ac\ud55c\ub2e4\uba74 \uae30\uc874 \ud30c\uc77c\uc740 \uc5c6\uc5b4\uc9c0\uace0 \ub2e4\uc2dc \uc0dd\uc131\ub41c\ub2e4.\n", "s = '0123456789abcdef'\n", "f.write(s)\n", " \n", "f.seek(5) # \uc2dc\uc791\ubd80\ud130 5\ubc14\uc774\ud2b8 \ud3ec\uc778\ud130 \uc774\ub3d9\n", "print f.tell() # \ud604\uc7ac \uc704\uce58 \ub3cc\ub824\uc90c\n", "print f.read(1) # 1\ubb38\uc790 \uc77d\uae30\n", "print f.tell()\n", "print\n", "\n", "f.seek(2, 1) # \ud604\uc7ac \uc704\uce58\uc5d0\uc11c 2\ubc14\uc774\ud2b8 \ud3ec\uc778\ud130 \uc774\ub3d9\n", "print f.tell()\n", "print f.read(1)\n", "print\n", "\n", "f.seek(-3,2) # \ub05d\ubd80\ud130 \uc55e\uc73c\ub85c 3\ubc14\uc774\ud2b8 \ud3ec\uc778\ud130 \uc774\ub3d9\n", "print f.tell()\n", "print f.read(1)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "5\n", "5\n", "6\n", "\n", "8\n", "8\n", "\n", "13\n", "d\n" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 08 \ud30c\uc77c \uac1d\uccb4 \uc18d\uc131\ub4e4\n", "***\n", "- \uae30\ud0c0 \ud30c\uc77c \uac1d\uccb4 \uba54\uc18c\ub4dc\ub4e4\n", "\n", "| \uba54\uc18c\ub4dc | \uac04\ub2e8 \uc124\uba85 |\n", "|--------|-----------------------------|\n", "| file.flush() | \ubc84\ud37c\uc758 \ub0b4\uc6a9\uc744 \ubaa8\ub450 \ud30c\uc77c\uc5d0 \ucd9c\ub825\ud55c\ub2e4. |\n", "| file.fileno() | file \uac1d\uccb4\uc758 \ud30c\uc77c \uae30\uc220(File Descriptor)\ub97c \ub9ac\ud134\ud55c\ub2e4. |\n", "| file.isatty() | \ub9cc\uc77c file \uac1d\uccb4\uac00 tty \uc7a5\uce58\uc774\uba74 True, \uc544\ub2c8\uba74 False\uc744 \ub9ac\ud134\ud55c\ub2e4. |\n", "| file.truncate([size]) | \ud30c\uc77c\uc744 \ud604\uc7ac \ud3ec\uc778\ud130 \uc704\uce58\ubd80\ud130 \uc9c0\uc815\ub41c \ubc14\uc774\ud2b8 \ud06c\uae30 \uc774\ud6c4\ub97c \ubc84\ub9bc. \uc778\uc218\ub97c \uc8fc\uc9c0 \uc54a\uc73c\uba74 \ub9c8\uc9c0\ub9c9\uae4c\uc9c0 \uc790\ub978\ub2e4. |" ] }, { "cell_type": "code", "collapsed": false, "input": [ "name = 't.txt' \n", "f = open(name, 'w+')\n", "s = '0123456789abcdef'\n", "f.write(s)\n", "\n", "f.seek(0)\n", "f.truncate(10) # \ud604\uc7ac \ud3ec\uc778\ud130 \uc704\uce58\uc5d0\uc11c 10 \ubc14\uc774\ud2b8 \uc774\ud6c4\ub97c \uc798\ub77c \ubc84\ub9bc\n", "f.seek(0)\n", "print f.read()\n", "print\n", "\n", "f.seek(5)\n", "f.truncate() # \ud604\uc7ac \ud3ec\uc778\ud130 \uc704\uce58\uc5d0\uc11c \ub9c8\uc9c0\ub9c9\uae4c\uc9c0 \uc798\ub77c \ubc84\ub9bc\n", "f.seek(0)\n", "print f.read()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "0123456789\n", "\n", "01234\n" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud30c\uc77c \uac1d\uccb4 \uc18d\uc131\ub4e4\n", "\n", "| \uba54\uc18c\ub4dc | \uac04\ub2e8 \uc124\uba85 |\n", "|--------|-----------------------------|\n", "| file.closed | closed\ub418\uc5c8\uc73c\uba74 True, \uc544\ub2c8\uba74 False\uc744 \ub9ac\ud134\ud55c\ub2e4. |\n", "| file.mode | \ud30c\uc77c\uc774 \uc624\ud508\ub41c \ubaa8\ub4dc |\n", "| file.name | \uc624\ud508\ub41c \ud30c\uc77c \uc774\ub984 |" ] }, { "cell_type": "code", "collapsed": false, "input": [ "name = 't.txt' \n", "f = open(name, 'w+')\n", "print f.closed\n", "print f.mode\n", "print f.name" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "False\n", "w+\n", "t.txt\n" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 09 \ud30c\uc77c \uc785\ucd9c\ub825 \uc608\uc81c\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- sample.txt \ud30c\uc77c \ub0b4\uc6a9" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Do you work in C, C++, or Java on large projects?\n", "We'll show how Python will give you results quicker and more reliably.\n", "Are you already scripting in a laguage other than Python?\n", "Whatever programming you're doing now, Python can improve it." ] }, { "cell_type": "code", "collapsed": false, "input": [ "#filename: replace.py\n", "#coding=utf-8 \n", "import sys # argv \ucc98\ub9ac\ub97c \uc704\ud574 \ud544\uc694\ud568\n", "import re # \uc815\uaddc\uc2dd \ucc98\ub9ac\ub97c \uc704\ud574 \ud544\uc694\ud568\n", "\n", "def replace(fname, srcstr, deststr):\n", " f = open(fname)\n", " txt = f.read()\n", " txt = re.subn(srcstr, deststr, txt)[0]\n", " return txt\n", "\n", "if __name__ == '__main__':\n", " if len(sys.argv) != 4:\n", " print \"\"\"Usage : replace filename srcstr deststr\"\"\"\n", " sys.exit()\n", " print replace(sys.argv[1], sys.argv[2], sys.argv[3])" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\> ipython replace.py sample.txt show SHOW\n", "\n", "Do you work in C, C++, or Java on large projects? We'll SHOW how Python will give you results quicker and more reliably. Are you already scripting in a laguage other than Python? Whatever programming you're doing now, Python can improve it.\n", "\n", "\\> ipython replace.py sample.txt [a-z] \"\"\n", "\n", "D C, C++, J ? W' P . A P? W ' , P .\n", "\n", "\\> ipython replace.py sample.txt \\\\W ^\n", "\n", "Do^you^work^in^C^^C^^^^or^Java^on^large^projects^^We^ll^show^how^Python^will^give^you^results^quicker^and^more^reliably^^Are^you^already^scripting^in^a^laguage^other^than^Python^^Whatever^programming^you^re^doing^now^^Python^can^improve^it^\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 10 \ud45c\uc900 \uc785\ucd9c\ub825 \ubc29\ud669 \uc804\ud658\n", "***\n", "\n", "- sys \ubaa8\ub4c8\uc758 \ud45c\uc900 \uc785\ucd9c\ub825 \uad00\ub828 \uac1d\uccb4\n", " - sys.stdout: \ud45c\uc900 \ucd9c\ub825\n", " - sys.stderr: \ud45c\uc900 \uc5d0\ub7ec \ucd9c\ub825\n", " - sys.stdin: \ud45c\uc900 \uc785\ub825\n", "- \uc608\ub97c \ub4e4\uc5b4, sys.stdout\uc744 \ud30c\uc77c \uac1d\uccb4\ub85c \ubcc0\ud658\ud558\uba74 \ubaa8\ub4e0 \ud45c\uc900 \ucd9c\ub825(print \ucd9c\ub825)\uc740 \ud574\ub2f9 \ud30c\uc77c\ub85c \uc800\uc7a5\ub41c\ub2e4." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 10-1 \ud45c\uc900 \ucd9c\ub825\uc744 \ud30c\uc77c\ub85c \uc800\uc7a5\ud558\uae30" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# redirect.py\n", "import sys\n", "\n", "f = open('t.txt', 'w')\n", "stdout = sys.stdout # \ud45c\uc900 \ucd9c\ub825 \uc800\uc7a5\ud574 \ub450\uae30\n", "sys.stdout = f # \ud30c\uc77c \uac1d\uccb4\ub85c \ud45c\uc900 \ucd9c\ub825 \ubcc0\uacbd\n", "print 'Sample output'\n", "print 'Good'\n", "print 'Good'\n", "f.close()\n", "sys.stdout = stdout # \ud544\uc694\ud558\uba74 \ud45c\uc900 \ucd9c\ub825 \uc6d0\uc0c1 \ubcf5\uad6c" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "f = open('t.txt')\n", "print f.read()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Sample output\n", "Good\n", "Good\n" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- print \ub0b4\uc7a5 \ud568\uc218\ub97c \uc9c1\uc811 \uc774\uc6a9\ud558\uc5ec \ucd9c\ub825\uc744 \ub2e4\ub978 \uac1d\uccb4\ub85c \uc804\ud658\ud558\uae30 " ] }, { "cell_type": "code", "collapsed": false, "input": [ "print >> sys.stderr, \"Warning, action field not supplied\"" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "Warning, action field not supplied\n" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ub3d9\uc77c \ubc29\ubc95\uc73c\ub85c \ud45c\uc900 \ucd9c\ub825(print)\uc744 \ud30c\uc77c \uac1d\uccb4\ub85c \uc804\ud658" ] }, { "cell_type": "code", "collapsed": false, "input": [ "f = open('t.txt', 'w+')\n", "print >> f, 'spam string'\n", "f.seek(0)\n", "print f.read()\n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "spam string\n", "\n" ] } ], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 10-2 \ud45c\uc900 \ucd9c\ub825\uc744 \ubb38\uc790\uc5f4\ub85c \uc800\uc7a5\ud558\uae30(StringIO)\n", "- StringIO \ubaa8\ub4c8\uc758 StringIO \ud074\ub798\uc2a4 \uac1d\uccb4\n", " - \ud30c\uc77c \uac1d\uccb4\ucc98\ub7fc \uc785\ucd9c\ub825 \uac00\ub2a5\ud55c \ubb38\uc790\uc5f4 \uac1d\uccb4\n", " - StringIO\uc5d0 \uc9c0\uc6d0\ub418\ub294 \uba54\uc18c\ub4dc\ub294 \ud30c\uc77c \uac1d\uccb4\uac00 \uc9c0\uc6d0\ud558\ub294 \uba54\uc18c\ub4dc\uc640 \uac70\uc758 \ub3d9\uc77c\ud558\ub2e4.\n", " - getvalue() \uba54\uc18c\ub4dc\n", " - \ud604\uc7ac\uae4c\uc9c0 \ub2f4\uc544 \ub193\uc740 \uc804\uccb4 \ub0b4\uc6a9\uc744 \ubc18\ud658\ud55c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import StringIO\n", "\n", "f = StringIO.StringIO()\n", "f.write(\"abc\")\n", "f.seek(0)\n", "s = f.read()\n", "print s\n", "print\n", "\n", "s2 = f.getvalue()\n", "print s2" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "abc\n", "\n", "abc\n" ] } ], "prompt_number": 29 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud45c\uc900 \ucd9c\ub825\uc73c\ub85c \ubb38\uc790\uc5f4 \uac1d\uccb4\uc5d0 \ub0b4\uc6a9 \uc791\uc131\ud558\uae30 " ] }, { "cell_type": "code", "collapsed": false, "input": [ "import sys\n", "import StringIO\n", "\n", "stdout = sys.stdout # \ud45c\uc900 \ucd9c\ub825 \uc800\uc7a5\ud574 \ub450\uae30\n", "sys.stdout = f = StringIO.StringIO() \n", "\n", "print type(f)\n", "print 'Sample output'\n", "print 'Good'\n", "print 'Good'\n", "\n", "sys.stdout = stdout" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "s = f.getvalue()\n", "\n", "print 'Done-------'\n", "print s" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Done-------\n", "\n", "Sample output\n", "Good\n", "Good\n", "\n" ] } ], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 10-3 \ubb38\uc790\uc5f4\uc744 \ud30c\uc77c \uac1d\uccb4\ucc98\ub7fc \uc77d\uc5b4\ub0b4\uae30(StringIO)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# stringfile.py\n", "import StringIO\n", "\n", "s = '''Python is a coollittle language.\n", "It is well designed, compact, easy to learn and fun to program in.\n", "Python strongly encourages the programmer to program in an OO-way,\n", "but does not require it.\n", "'''\n", "\n", "f = StringIO.StringIO(s) #\ubb38\uc790\uc5f4 \uac1d\uccb4\uc5d0\uc11c \ud30c\uc77c \uac1d\uccb4 \uc5bb\uc5b4 \ub0b4\uae30\n", "f.read().upper() #\ub300\ubb38\uc790\ub85c \ubcc0\ud658" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 32, "text": [ "'PYTHON IS A COOLLITTLE LANGUAGE.\\nIT IS WELL DESIGNED, COMPACT, EASY TO LEARN AND FUN TO PROGRAM IN.\\nPYTHON STRONGLY ENCOURAGES THE PROGRAMMER TO PROGRAM IN AN OO-WAY,\\nBUT DOES NOT REQUIRE IT.\\n'" ] } ], "prompt_number": 32 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 11 \uc9c0\uc18d \ubaa8\ub4c8(Persistent Modules)\n", "***\n", "- \uc9c0\uc18d\uc131(Persistence)\n", " - \ud504\ub85c\uadf8\ub7a8 \ub0b4\uc5d0 \uc0dd\uc131\ub41c \uac01\uc885 \uac1d\uccb4\ub4e4\uc744 \ud574\ub2f9 \ud504\ub85c\uadf8\ub7a8 \uc885\ub8cc \uc774\ud6c4\uc5d0\ub3c4 \uc874\uc7ac\ud558\uac8c \ub9cc\ub4e4\uace0, \uadf8\uac83\ub4e4\uc744 \ub3d9\uc77c\ud55c \ub610\ub294 \ub2e4\ub978 \ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \uae30\ub2a5\n", "- \uc9c0\uc18d\uc131 \uae30\ub2a5\uc744 \uc9c0\uc6d0\ud558\ub294 \ubaa8\ub4c8\n", " - DBM \uad00\ub828 \ubaa8\ub4c8\n", " - anydbm, dbm, gdbm, dbhash, dumbdbm\n", " - anydbm: \uc2dc\uc2a4\ud15c\uc5d0\uc11c \uc0ac\uc6a9\uac00\ub2a5\ud55c \ubaa8\ub4c8 \uc911 \uac00\uc7a5 \ucd5c\uc801\uc758 \ubaa8\ub4c8\uc744 \ubc18\ud658\ud568\n", " - \uae30\ubcf8\uc801\uc73c\ub85c dumbdbm\uc744 \ubc18\ud658\ud55c\ub2e4\n", " - \uc0ac\uc804 \uc790\ub8cc\ud615\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uacfc \ub3d9\uc77c\ud55c \ubc29\ubc95\uc73c\ub85c \uc0ac\uc6a9\n", " - pickle \ubaa8\ub4c8\n", " - \ud30c\uc774\uc36c\uc758 \uac1d\uccb4\ub97c \uc800\uc7a5\ud558\ub294 \uc77c\ubc18\ud654\ub41c \uc9c0\uc18d\uc131 \ubaa8\ub4c8\n", " - \ud30c\uc774\uc36c\uc758 \uae30\ubcf8 \uac1d\uccb4\ubfd0\ub9cc \uc544\ub2c8\ub77c \uc0ac\uc6a9\uc790 \uc815\uc758\uc758 \ubcf5\uc7a1\ud55c \uac1d\uccb4\ub3c4 \uc800\uc7a5 \uac00\ub2a5\n", " - \uae30\ubcf8\uc801\uc73c\ub85c \ud14d\uc2a4\ud2b8 \ubaa8\ub4dc\ub85c \uc800\uc7a5\ud558\uc9c0\ub9cc \uc774\uc9c4 \ubaa8\ub4dc\ub85c\ub3c4 \uc800\uc7a5 \uac00\ub2a5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 11-1 DBM \ud30c\uc77c \uad00\ub828 \ubaa8\ub4c8 \uc0ac\uc6a9\ud558\uae30\n", "- anydbm.open(filename[, mode])\n", " - \ub450 \ubc88\uc9f8 \uc778\uc790 mode \uc124\uba85\n", " \n", "| mode | \uac04\ub2e8 \uc124\uba85 |\n", "|--------|-----------------------------|\n", "| 'r' | \uc77d\uae30 \uc804\uc6a9 \ubaa8\ub4dc\ub85c \uc624\ud508 (\uae30\ubcf8\uac12) |\n", "| 'w' | \uc77d\uae30/\uc4f0\uae30 \ubaa8\ub4dc\ub85c \uc624\ud508|\n", "| 'c' | \uc77d\uae30/\uc4f0\uae30 \ubaa8\ub4dc\ub85c \uc624\ud508, \ud30c\uc77c\uc774 \uc5c6\uc73c\uba74 \uc0dd\uc131 |\n", "| 'n' | \uc77d\uae30/\uc4f0\uae30 \ubaa8\ub4dc\ub85c \uc624\ud508, \ud56d\uc0c1 \uc0c8\ub85c\uc6b4 \ub0b4\uc6a9\uc73c\ub85c \ucd08\uae30\ud654\ud558\uc5ec \uc624\ud508 |" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import anydbm\n", "f = anydbm.open('music', 'n')\n", "\n", "f['flute'] = 'wood wind'\n", "f['violin'] = 'string'\n", "f['piano'] = 'keyboard'\n", "\n", "print f.keys() # keys() \uba54\uc18c\ub4dc\n", "print f.values() \n", "print f.items()\n", "print\n", "print len(f) # \ub808\ucf54\ub4dc \uc218\n", "print\n", "print 'oboe' in f # \uba64\ubc84\uc2ed \ud14c\uc2a4\ud2b8\n", "print\n", "print f['flute'] # \uc778\ub371\uc2f1\uc73c\ub85c \uac12 \uc77d\uc5b4\uc624\uae30\n", "print f['violin']\n", "f.close() # \ud30c\uc77c \ub2eb\uae30" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['flute', 'piano', 'violin']\n", "['wood wind', 'keyboard', 'string']\n", "[('flute', 'wood wind'), ('piano', 'keyboard'), ('violin', 'string')]\n", "\n", "3\n", "\n", "False\n", "\n", "wood wind\n", "string\n" ] } ], "prompt_number": 51 }, { "cell_type": "code", "collapsed": false, "input": [ "import anydbm\n", "f = anydbm.open('music','c') #'music' \ud30c\uc77c \uc5f4\uae30\n", "\n", "print f.keys() #\ud0a4 \ubaa9\ub85d \uc5bb\uae30\n", "print\n", "for k in f: #\uc804\uccb4 \ub0b4\uc6a9 \ucd9c\ub825\n", " print k, '-', f[k]\n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['flute', 'piano', 'violin']\n", "\n", "flute - wood wind\n", "piano - keyboard\n", "violin - string\n" ] } ], "prompt_number": 49 }, { "cell_type": "code", "collapsed": false, "input": [ "import anydbm\n", "f = anydbm.open('music','c') # 'music' \ud30c\uc77c \uc5f4\uae30\n", "\n", "f['oboe'] = 'wood wind' # \ub0b4\uc6a9 \ucd94\uac00\n", "f['piano'] = 'keyboard instrument' # \ub0b4\uc6a9 \ubcc0\uacbd\n", "del f['violin'] # \ub0b4\uc6a9 \uc0ad\uc81c\n", "for k in f:\n", " print k, '-', f[k] # \ub2e4\uc2dc \uc804\uccb4 \ub0b4\uc6a9 \ucd9c\ub825\n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "flute - wood wind\n", "oboe - wood wind\n", "piano - keyboard instrument\n" ] } ], "prompt_number": 50 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 11-2 \ud53c\ud074\ub9c1(pickling)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pickle\n", "\n", "phone = {'tom':4358382, 'jack':9465215, 'jim':6851325, 'Joseph':6584321}\n", "List = ['string', 1234, 0.2345]\n", "Tuple = (phone, List) # \ub9ac\uc2a4\ud2b8, \ud29c\ud50c, \uc0ac\uc804\uc758 \ubcf5\ud569 \uac1d\uccb4\n", "\n", "f = open('pickle.txt', 'w') # \ud30c\uc77c \uac1d\uccb4\ub97c \uc5bb\ub294\ub2e4.\n", "\n", "pickle.dump(Tuple, f) # \ud30c\uc77c\ub85c \ucd9c\ub825(pickling), \ubcf5\ud569 \uac1d\uccb4 \ucd9c\ub825 \n", "f.close() \n", "\n", "f = open('pickle.txt') \n", " \n", "x,y = pickle.load(f) # \ud30c\uc77c\uc5d0\uc11c \uc77d\uc5b4\uc624\uae30. \ud29c\ud50c\uc758 \ub0b4\uc6a9\uc744 x, y\uc5d0 \ubc1b\ub294\ub2e4.\n", "print x # \uc0ac\uc804\n", "print y # \ub9ac\uc2a4\ud2b8" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "{'jim': 6851325, 'Joseph': 6584321, 'jack': 9465215, 'tom': 4358382}\n", "['string', 1234, 0.2345]\n" ] } ], "prompt_number": 52 }, { "cell_type": "code", "collapsed": false, "input": [ "import pickle\n", "\n", "class Simple: # \uac00\uc7a5 \ub2e8\uc21c\ud55c \ud074\ub798\uc2a4\ub97c \uc815\uc758\n", " pass\n", "\n", "s = Simple() # \uc778\uc2a4\ud134\uc2a4 \uac1d\uccb4 \uc0dd\uc131\n", "s.count = 10 # \uc778\uc2a4\ud134\uc2a4 \uc774\ub984 \uacf5\uac04\uc5d0 \ubcc0\uc218 \uc0dd\uc131\n", "\n", "f = open('pickle2.txt', 'w')\n", "pickle.dump(s, f) #\uc778\uc2a4\ud134\uc2a4 \uc800\uc7a5\n", "f.close()\n", "\n", "f = open('pickle2.txt')\n", "t = pickle.load(f) #\uc778\uc2a4\ud134\uc2a4 \uac00\uc838\uc624\uae30\n", "print t.count" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10\n" ] } ], "prompt_number": 53 } ], "metadata": {} } ] }