6.3. ÆÄÀÏÀ» ÀÔ¸À´ë·Î

(¾´ ³¯ : 2001-06-14)

 

¿À´Ãµµ ¿À´ÃÀÇ ÇØ°¡ ¶¹±º¿ä~

Àú´Â ¡®³»ÀÏÀº ³»ÀÏÀÇ ÇØ°¡ ¶ã°Å¾ß¡¯¶ó´Â ¸»À» °¡²û ¾Ç¿ëÇÑ´ä´Ï´Ù.

¿À´Ã ÇÒ ÀÏÀ» ³»ÀÏ·Î ¹Ì·ê ¶§¡¦^^;

 

¿À´ÃÀº ÆÄÀÏÀ» ÀÔ¸À´ë·Î ¿ä¸®ÇÒ ¼ö ÀÖµµ·Ï ¿©·¯ °¡Áö ºñ¹ýÀ» Àü¼öÇØµå¸®Áö¿ä.

¸ÕÀú Á¶±Ý º¹ÀâÇÑ ÀڷḦ ÆÄÀÏ¿¡ ¾²°í Àд ¹æ¹ýºÎÅÍ ¾Ë¾Æº¾½Ã´Ù.

ÀÌ·² ¶§´Â pickle(ÇÇŬ)À̶õ ¸ðµâÀ» »ç¿ëÇÕ´Ï´Ù.

¿Ö ÇÇÀÚ ¸ÔÀ» ¶§ ³ª¿À´Â ¹ÝÂùÀ» À̸§À¸·Î ºÙ¿´´ÂÁö¡¦

 

¿¹Á¦·Î´Â ȸ¿øÀÇ ID¿Í ºñ¹Ð¹øÈ£¸¦ ÆÄÀÏ¿¡ ÀúÀåÇÏ´Â °ÍÀ» »ý°¢Çغ¸¾Ò½À´Ï´Ù.

 

>>> users = {'kim':'3kid9', 'sun80':'393948', 'ljm':'py90390'}

>>> f = open('d:/python21/exam/users.txt', 'w')

>>> import pickle

>>> pickle.dump(users, f)

>>> f.close()

 

óÀ½¿¡ ID¿Í ºñ¹Ð¹øÈ£¸¦ users¶ó´Â »çÀü¿¡ ´ã¾Ò½À´Ï´Ù.

±×¸®°í users.txt¶ó´Â ÆÄÀÏÀ» »õ·Î ¿­¾î¼­ f¶ó°í Çß±¸¿ä.

±× ´ÙÀ½¿¡´Â ¿ÀÀÌÁö(pickle^^;) ¸ðµâÀÇ ´ýÇÁ(dump)¸¦ »ç¿ëÇß½À´Ï´Ù.

 

¿©·¯ºÐ ´ýÇÁ Æ®·° ´Ù ¾Æ½ÃÁÒ? ¿Ö °ø»çÀå¿¡¼­ Èë ½Æ°í ´Ù´Ï´Â ¹«Áö Å« Æ®·° ÀÖÀݾƿä.

±×·± Â÷´Â µÚÂÊ ÁüÄ­À» µé¾î¿Ã·Á¼­ ÈëÀ» ¿Í¸£¸£ ½ñ¾Æ³»Áö ¾Ê½À´Ï±î?

¿©±â¼­ º¸½Ã´Â dumpµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.

users¶ó´Â ¸®½ºÆ®ÀÇ ³»¿ëÀ» ÆÄÀÏ f¿¡ ¿Í¸£¸£ ½ñ¾Æº×´Â °ÅÁö¿ä.

À½, ÀÌ·¸°Ô±îÁö ¼³¸íÇÒ ÇÊ¿ä´Â ¾øÀ» ÅÙµ¥¡¦ ¿À´Ã ¾µ °ÍÀÌ ¾ø´Ùº¸´Ï¡¦

 

ÀÌÁ¦ ¸Þ¸ðÀåÀ¸·Î users.txt ÆÄÀÏÀ» ¿­¾îº¸½Ã¸é ¸ð¾çÀÌ Á» ÁöÀúºÐÇϱä ÇØµµ µ¥ÀÌÅͰ¡ ´Ù µé¾îÀÖ´Â °É º¸½Ç ¼ö ÀÖÀ» °Å¿¹¿ä.

 

±×·¸´Ù¸é ÀÌ ÆÄÀÏ¿¡ µé¾îÀÖ´Â °ÍÀ» ¿ø·¡´ë·Î µ¹·Áº¼±î¿ä?

¿ø·¡´ë·Î µ¹¸®´Â °Íµµ ¿ª½Ã ¿ÀÀÌÁö ¸ðµâÀÌ ÇÒ ÀÏÀ̰ÚÁÒ.

 

>>> f = open('d:/python21/exam/users.txt')

>>> a = pickle.load(f)

>>> print a

{'sun80': '393948', 'kim': '3kid9', 'ljm': 'py90390'}

 

»ç½Ç ¹æ±Ý º¸¿©µå¸° °ÍÀº ±×¸® º¹ÀâÇÒ °Íµµ ¾øÁö¸¸ pickle ¸ðµâÀº ÆÄÀ̽㿡¼­ ¸¸µé¾îÁö´Â °ÍÀº ¹¹µçÁö ´Ù ÆÄÀÏ¿¡ ÀûÀ» ¼ö ÀÖ´Ù°í ÇÕ´Ï´Ù.

¡®±×°Ô ¹¹ ¾î¶§¼­¡¯¶ó°í »ý°¢ÇϽÇÁö ¸ð¸£°ÚÁö¸¸ ÀÌ°Ç ³î¶ó¿î ±â´ÉÀ̶ó°í Æ©Å丮¾ó¿¡ ¾²¿©ÀÖ½À´Ï´Ù.

 

¿ÀÀÌÁö´Â ÀÌÂë ÇØµÎ°í, Àü¿¡ Àá±ñ ±¸°æÇß´ø glob ¸ðµâ¿¡ ´ëÇØ ¾Ë¾Æº¸µµ·Ï ÇÏÁÒ.

glob´Â ÆÄÀϵéÀÇ ¸ñ·ÏÀ» »ÌÀ» ¶§ »ç¿ëÇϴµ¥, ÆÄÀÏÀÇ °æ·Î¸íÀ» ÀÌ¿ëÇØ¼­ ÀÔ¸À´ë·Î ¿ä¸®ÇÒ ¼ö ÀÖ´ä´Ï´Ù.

 

>>> import glob

>>> glob.glob('*.*')

['INSTALL.LOG', 'LICENSE.txt', 'NEWS.txt', 'py.ico', 'pyc.ico', 'pycon.ico', 'py

thon.exe', 'pythonw.exe', 'readme.txt', 'UNWISE.EXE', 'w9xpopen.exe']

>>> glob.glob('*.txt')

['LICENSE.txt', 'NEWS.txt', 'readme.txt']

 

À§¿¡¼­ º°Ç¥(*)´Â ¹«½¼ ±ÛÀÚµç, ¸î ±ÛÀÚµç »ó°ü ¾ø´Ù´Â ¶æÀ¸·Î µð·ºÅ丮(Æú´õ)¿¡ µé¾îÀÖ´Â ÆÄÀϵéÀ» ±×³É ´Ù º¸·Á¸é ¡®*.*¡¯¶ó°í ÇØÁÖ¸é µË´Ï´Ù.

ÆÄÀÏ¸í¿¡ »ó°ü ¾øÀÌ È®ÀåÀÚ°¡ txtÀÎ ÆÄÀÏÀ» ¸ðµÎ º¸°í ½ÍÀ¸¸é ¡®*.txt¡¯¶ó°í ÇÏ¸é µÇÁö¿ä.

 

´ÙÀ½Àº glob°ú ÇÔ²² os.path ¸ðµâÀ» »ç¿ëÇÑ ¿¹Á¦ÀÔ´Ï´Ù.

 

>>> import os.path

>>> files = glob.glob('*')

>>> for x in files:

...     print x,

...     if os.path.isdir(x):                  # µð·ºÅ丮Àΰ¡?

...             print '<DIR>'

...     else:

...             print ''

 

½ºÅ©¸³Æ®¸¸ º¸°í ¾î¶² ÀÏÀ» Çϴ°ÇÁö ÁüÀÛÀÌ °¡½Ã´ÂÁö¿ä?

µÑ°ÁÙ¿¡¼­ glob.glob(¡®*¡¯)¸¦ ÇØ¼­ ¾ò¾îÁø ÆÄÀÏ ¸ñ·ÏµéÀ» files¶ó´Â ¸®½ºÆ®·Î ³Ö¾îÁá½À´Ï´Ù.

±× ´ÙÀ½ºÎÅÍ´Â for ¹®À» ÅëÇØ¼­ ÆÄÀϸíÀ» Çϳª¾¿ Ãâ·ÂÇÑ ´ÙÀ½ ±×°ÍÀÌ µð·ºÅ丮À̸é <DIR>À̶ó°í Ãâ·ÂÇØÁÖ°í, ±×·¸Áö ¾ÊÀ¸¸é ±×³É ÁÙ¸¸ ³Ñ°ÜÁÖµµ·Ï ÇßÁö¿ä.

 

¹ú½á Áý¿¡ °¡±â·Î ¾àÁ¶ÇÑ ½Ã°£ÀÌ µÇ¾ú½À´Ï´Ù.

³»Àϵµ ¶ß°Å¿î ÇØ°¡ ¶°¿À¸£±â¸¦¡¦