Skip to content

Commit b2a6b5f

Browse files
committed
Add 파이썬 기본 강좌 내용 업데이트
* 3강 ~ 7강까지
1 parent efa3bd8 commit b2a6b5f

12 files changed

+2246
-278
lines changed

Basic/Lesson3.ipynb

+235-190
Large diffs are not rendered by default.

Basic/Lesson4.ipynb

+452
Large diffs are not rendered by default.

Basic/Lesson5.ipynb

+451
Large diffs are not rendered by default.

Basic/Lesson6.ipynb

+228
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,228 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"metadata": {},
6+
"source": [
7+
"# file로 부터 읽고 쓰기\n",
8+
"\n",
9+
"순차파일, 이진파일, 랜덤파일등을 처리할 수 있다.\n",
10+
"\n",
11+
"## file 작업시 일반적인 업무 순서\n",
12+
"\n",
13+
"* 1단계 : file 핸들러 개체를 생성한다.\n",
14+
" \n",
15+
"``` python\n",
16+
" f1= open('파일명1','r', encoding='UTF-8')\n",
17+
" f2= open('파일명2','w')\n",
18+
"```\n",
19+
"* 2단계 : file 핸들러를 이용하여 읽거나 쓰기 작업을 한다.\n",
20+
"``` python\n",
21+
" mydata = f1.read()\n",
22+
" f2.write(mydata)\n",
23+
"```\n",
24+
"\n",
25+
"* 3단계 : file 핸들러를 닫아준다.\n",
26+
"``` python\n",
27+
" f1.close()\n",
28+
" f2.close() \n",
29+
"```\n",
30+
"\n",
31+
"## file 읽기 작업\n",
32+
"\n",
33+
"1. 파일을 읽어 온다.\n",
34+
"``` python\n",
35+
"f= open('파일명1','r')\n",
36+
"data = f.read()\n",
37+
"```\n",
38+
"2. split()메서드를 이용하여 리스트 자료형으로 변환한다.\n",
39+
"``` python\n",
40+
"data= data.split('\\n')\n",
41+
"```\n",
42+
"3. 다음 파일 작업을 위해 파일을 닫는다.\n",
43+
"``` python\n",
44+
"f.close()\n",
45+
"``` \n",
46+
"4. 한줄씩 읽기/ 한꺼번에 읽기\n",
47+
"``` python\n",
48+
"f= open('파일명1','r')\n",
49+
"k= f.readline() # 한줄읽기 , 파일포인터가 자동으로 이동\n",
50+
"k= f.readline() # 한줄읽기 , 파일포인터가 자동으로 이동\n",
51+
"k= f.readlines() # 한꺼번에 읽기, 파일포인터 기준으로 나머지를 모두 읽어 온다.\n",
52+
"f.close()\n",
53+
"```\n",
54+
"5. for문 연계\n",
55+
"``` python\n",
56+
"f= open('파일명1','r')\n",
57+
"for line in f: # 파일 핸들러의 한줄 단위로 집단형으로 인식, 순환한다.\n",
58+
" print(line, end='') \n",
59+
"```\n",
60+
"\n",
61+
"\n",
62+
"## file 쓰기작업 \n",
63+
"\n",
64+
"* 리스트 자료 쓰기 작업 - case 1\n",
65+
"list형 자료는 파일로 쓰로고 하면 에러가 발생하고, 파일 저장은 string형으로 저장하도록 안내한다.\n",
66+
"``` python\n",
67+
"data = ['우리나라','대한민국','사랑하는','우리조국']\n",
68+
"wf= open(\"파일명\",\"w\")\n",
69+
"st = \"\\n\".join(data)\n",
70+
"wr.write(st)\n",
71+
"wf.close()\n",
72+
"```\n",
73+
"\n",
74+
"* 리스트 자료 쓰기 작업 - case 2\n",
75+
"``` python\n",
76+
"wf= open(\"파일명\",\"w\")\n",
77+
"lst = ['우리나라','대한민국','사랑하는','우리조국']\n",
78+
"wf.writelines(lst)\n",
79+
"wf.close()\n",
80+
"```\n",
81+
"\n"
82+
]
83+
},
84+
{
85+
"cell_type": "code",
86+
"execution_count": 20,
87+
"metadata": {},
88+
"outputs": [
89+
{
90+
"name": "stdout",
91+
"output_type": "stream",
92+
"text": [
93+
"작업 완료\n"
94+
]
95+
}
96+
],
97+
"source": [
98+
"f=open('Lesson6_ex_read_test.txt','r', encoding='UTF-8')\n",
99+
"basedata=f.read()\n",
100+
"f.close()\n",
101+
"\n",
102+
"data=basedata.split('\\n')\n",
103+
"for k in range(len(data)):\n",
104+
" data[k] = data[k].split(',')\n",
105+
"\n",
106+
"\n",
107+
"f=open('Lesson6_ex_write_test.txt','w', encoding='UTF-8')\n",
108+
"\n",
109+
"for k in range(len(data)): # 1차원 리스트 개수 만큼 반복\n",
110+
" sum=0 \n",
111+
" for j in range(1, len(data[k])): # 2차원 리스트의 개수 만큼 반복\n",
112+
" sum += int(data[k][j])\n",
113+
" data[k].append(str(sum)) \n",
114+
" av= int(sum/3)\n",
115+
" data[k].append(str(av))\n",
116+
" data2=', '.join(data[k]) + '\\n'\n",
117+
"\n",
118+
" f.write(data2)\n",
119+
"\n",
120+
"f.close()\n",
121+
"print ('작업 완료')"
122+
]
123+
},
124+
{
125+
"cell_type": "markdown",
126+
"metadata": {},
127+
"source": [
128+
"## pickle 모듈\n",
129+
"\n",
130+
"구조화된 객체를 파일에 저장 및 복원해주는 모듈\n",
131+
"문자열로의 변환 등의 절차가 필요 없다.\n",
132+
"\n",
133+
"* pickling : 객체가 저장되기 위해 바이트 스트링으로 변환되는 과정 (object serialization)\n",
134+
"* unpickling : 바이트 스트링에서 원본객체로 복원되는 과정 (object deserialization)\n",
135+
"\n",
136+
"\n",
137+
"### pickle 모듈 사용하기\n",
138+
"1. 피클모듈 임포트\n",
139+
"2. 파일 열기\n",
140+
"3. 데이터 읽기/쓰기\n",
141+
"4. 파일 닫기\n",
142+
"\n",
143+
" ```python\n",
144+
" import pickle\n",
145+
" f= open(파일명, 'w')\n",
146+
" data=pickle.load(f) # pickle 모듈에서 데이터를 읽을때 load 메소드 사용\n",
147+
" pickle.dump(data, f) # pickle 모듈에서 데이터를 저장할때 dump 메소드 사용\n",
148+
" f.close()\n",
149+
" ```\n"
150+
]
151+
},
152+
{
153+
"cell_type": "code",
154+
"execution_count": 22,
155+
"metadata": {},
156+
"outputs": [],
157+
"source": [
158+
"import pickle\n",
159+
"\n",
160+
"myDic= {'김':'02-1234', '박':'032-333'}\n",
161+
"myLst= [24,56,98]\n",
162+
"myStr= \" 아름다운 우리나라 \"\n",
163+
"\n",
164+
"f= open(\"pickle_test.bin\",\"wb\")\n",
165+
"pickle.dump(myDic,f)\n",
166+
"pickle.dump(myLst,f)\n",
167+
"pickle.dump(myStr,f)\n",
168+
"f.close()"
169+
]
170+
},
171+
{
172+
"cell_type": "code",
173+
"execution_count": 23,
174+
"metadata": {},
175+
"outputs": [
176+
{
177+
"name": "stdout",
178+
"output_type": "stream",
179+
"text": [
180+
"{'김': '02-1234', '박': '032-333'}\n",
181+
"[24, 56, 98]\n",
182+
" 아름다운 우리나라 \n"
183+
]
184+
}
185+
],
186+
"source": [
187+
"import pickle\n",
188+
"\n",
189+
"f= open(\"pickle_test.bin\",\"rb\")\n",
190+
"data1 =pickle.load(f)\n",
191+
"data2 =pickle.load(f)\n",
192+
"data3 =pickle.load(f)\n",
193+
"f.close()\n",
194+
"\n",
195+
"print(data1)\n",
196+
"print(data2)\n",
197+
"print(data3)"
198+
]
199+
}
200+
],
201+
"metadata": {
202+
"kernelspec": {
203+
"display_name": "Python 3.10.5 64-bit (windows store)",
204+
"language": "python",
205+
"name": "python3"
206+
},
207+
"language_info": {
208+
"codemirror_mode": {
209+
"name": "ipython",
210+
"version": 3
211+
},
212+
"file_extension": ".py",
213+
"mimetype": "text/x-python",
214+
"name": "python",
215+
"nbconvert_exporter": "python",
216+
"pygments_lexer": "ipython3",
217+
"version": "3.10.5"
218+
},
219+
"orig_nbformat": 4,
220+
"vscode": {
221+
"interpreter": {
222+
"hash": "6be026cc2f54c9bec22506d53e3e394c3402c3c44c1202f9383de7e3faf9cb28"
223+
}
224+
}
225+
},
226+
"nbformat": 4,
227+
"nbformat_minor": 2
228+
}

Basic/Lesson6_ex_read_test.txt

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
김인문, 69,47, 89
2+
박동식, 77, 88, 69
3+
최전문, 68, 90, 90
4+
박동훈, 66, 88, 90
5+
이형호, 77, 100, 100
6+
한희훈, 99, 99, 99
7+
성동일, 55, 78, 63
8+
윤석렬, 10,5, 20

Basic/Lesson6_ex_write_test.txt

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
김인문, 69, 47, 89, 205, 68
2+
박동식, 77, 88, 69, 234, 78
3+
최전문, 68, 90, 90, 248, 82
4+
박동훈, 66, 88, 90, 244, 81
5+
이형호, 77, 100, 100, 277, 92
6+
한희훈, 99, 99, 99, 297, 99
7+
성동일, 55, 78, 63, 196, 65
8+
윤석렬, 10, 5, 20, 35, 11
9+
, 0, 0

0 commit comments

Comments
 (0)