๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ชฉ์ฐจ

    728x90

    ํŒŒ์ด์ฌ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰์„ ํ•  ๋•Œ ๋งŽ์€ ๋ณ€์ˆ˜๋“ค์ด ์ƒ๊ฒผ๋‹ค๊ฐ€ ์‚ฌ๋ผ์ง€๊ธฐ๋„ ํ•˜๊ณ  ๋ณ€์ˆ˜์˜ ๊ฐ’๋„ ๋งŽ์€ ๋ณ€๋™์ด ์žˆ๋‹ค.

    ๋˜ํ•œ ํ”„๋กœ๊ทธ๋žจ์€ ์‹คํ–‰์ด ๋๋‚˜๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค.

    ์ด๋•Œ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ์„ ํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ์‚ฌ์šฉ์„ ํ•œ๋‹ค๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ.

     

    ๋ฐ”๋กœ pickle์ด ์ด๊ฒƒ์„ ์ถฉ์กฑ์‹œ์ผœ์ค€๋‹ค.

     

    pickle์€ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํŒŒ์ด์ฌ์˜ ๋ชจ๋“ˆ์ด๋‹ค.

     

    ์‚ฌ์šฉ๋ฒ•

    import pickle

    ๋จผ์ € pickle ๋ชจ๋“ˆ์„ importํ•ด์ค€๋‹ค.

     

     

    1. ๋ฐ์ดํ„ฐ ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ

    import pickle
    
    ๋ฐ์ดํ„ฐํŒŒ์ผ๋ณ€์ˆ˜ = open("ํŒŒ์ผ๋ช….pickle", "wb")

    ํŒŒ์ผํ˜•์‹์€ .pickle๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์“ฐ๊ธฐ๋ชจ๋“œ์ธ w๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ด๋•Œ pickle๋กœ ์ €์žฅํ•  ํŒŒ์ผ์€ ํ…์ŠคํŠธ๊ฐ€ ์•„๋‹Œ

    ๋ฐ”์ด๋„ˆ๋ฆฌํ˜•์‹์ด๋‹ค.

    (์ด๋ฏธ์ง€ ํŒŒ์ผ, ์Œ์•…ํŒŒ์ผ, ์‹คํ–‰ ํŒŒ์ผ ๋“ฑ -> ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ)

    ๊ทธ๋ ‡๊ธฐ๋•Œ๋ฌธ์— w๋’ค์— b๋ฅผ ๋ถ™์—ฌ์„œ 'wb'๋กœ ์จ์ฃผ์–ด์•ผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ €์žฅ์ด ๋œ๋‹ค.

    (ํ…์ŠคํŠธํŒŒ์ผ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ์— ํ•œ๊ธ€์ด ์žˆ์–ด๋„ ๋ณ„๋„์˜ ์ธ์ฝ”๋”ฉ ์ง€์ •์ด ๋ถˆํ•„์š”!)

     

    pickle์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•  ๋•Œ dump()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

    dump(์ €์žฅํ•  ๋ฐ์ดํ„ฐ, ๋ฐ์ดํ„ฐํŒŒ์ผ๋ณ€์ˆ˜)

     

    import pickle
    
    FIFA_ability_file = open("ability.pickle", "wb") #๋ฐ”์ด๋„ˆ๋ฆฌํƒ€์ž…์ง€์ •
    ability = {"์ด๋ฆ„":"์†ํฅ๋ฏผ","์˜ค๋ฒ„๋กค":89, "์†๋„":88, "๋“œ๋ฆฌ๋ธ”":86, "์ŠˆํŒ…":87, "ํŒจ์Šค":82}
    
    pickle.dump(ability, FIFA_ability_file)
    FIFA_ability_file.close() #ํŒŒ์ผ ๋‹ซ๊ธฐ

    ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…ก

    โ€ป์ฃผ์˜ํ• ์ !!

    pickle.py๋กœ ํŒŒ์ด์ฌํŒŒ์ผ์„ ์ €์žฅํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

    ์ด๋Š” ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ๊ณผ ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋ฉด

    import ์‹œ์— ๋™์ผํ•œ ๊ฒฝ๋กœ์— ์žˆ๋Š” ํŒŒ์ผ์„ ๋จผ์ € ์ธ์‹ํ•˜๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ํ•œ๋‹ค! (by_๋‚˜๋„์ฝ”๋”ฉ ์„ ์ƒ๋‹˜)

    ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…ก

     

     

    2. ๋ฐ์ดํ„ฐ ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

    import pickle
    
    ๋ฐ์ดํ„ฐํŒŒ์ผ๋ณ€์ˆ˜ = open("ํŒŒ์ผ๋ช….pickle", "rb")

    ์ฝ๊ธฐ๋ชจ๋“œ์—์„œ๋„ ์—ญ์‹œ 'rb'๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

     

    ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ์—๋Š” load๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

    load(๋ฐ์ดํ„ฐํŒŒ์ผ๋ณ€์ˆ˜)
    import pickle
    
    FIFA_ability_file = open("ability.pickle", "rb") #๋ฐ”์ด๋„ˆ๋ฆฌํƒ€์ž…์ง€์ •
    ability = pickle.load(FIFA_ability_file)
    print(ability)
    FIFA_ability_file.close()
    ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…ก
    {"์ด๋ฆ„":"์†ํฅ๋ฏผ","์˜ค๋ฒ„๋กค":89, "์†๋„":88, "๋“œ๋ฆฌ๋ธ”":86, "์ŠˆํŒ…":87, "ํŒจ์Šค":82}

    ์œ„์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ๋ณ€์ˆ˜์— ์ž˜ ์ €์žฅ๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

     

     

     

    +Bonus

    ํ˜ผ์ž์„œ ์‹คํ—˜ํ•ด๋ณธ pickle์— ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ๋„ฃ๊ธฐ

     

    import pickle
    
    1. ํŒŒ์ผ์— ์ €์žฅํ•  ๋•Œ
    
    profile_file = open("profile.pickle", "wb")
    profile1 = {"์ด๋ฆ„":"๊น€์ ๋ก€", "๋‚˜์ด":20, "์ทจ๋ฏธ":["๋…์„œ","๊ณจํ”„"]}
    profile2 = {"์ด๋ฆ„":"๊น€๋ง์ˆ™", "๋‚˜์ด":23, "์ทจ๋ฏธ":["์ถ•๊ตฌ","๊ฒŒ์ž„"]}
    
    pickle.dump(profile1, profile_file)
    pickle.dump(profile2, profile_file) # profile์— ์žˆ๋Š” ์ •๋ณด๋ฅผ ํŒŒ์ผ์— ์ €์žฅ
    profile_file.close()
    
    #-------------------------------------------
    
    2. ํŒŒ์ผ ๋‚ด์šฉ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
    
    profile_file = open("profile.pickle", "rb")
    profile1 = pickle.load(profile_file)
    profile2 = pickle.load(profile_file) # ํŒŒ์ผ ๋‚ด์šฉ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
    print(profile1)
    print(profile2)
    profile_file.close()
    ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…ก
    {"์ด๋ฆ„":"๊น€์ ๋ก€", "๋‚˜์ด":20, "์ทจ๋ฏธ":["๋…์„œ","๊ณจํ”„"]}
    {"์ด๋ฆ„":"๊น€๋ง์ˆ™", "๋‚˜์ด":23, "์ทจ๋ฏธ":["์ถ•๊ตฌ","๊ฒŒ์ž„"]}
    
    #-------------------------------------------
    
    2-1. ํŒŒ์ผ ๋‚ด์šฉ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
    
    profile_file = open("profile.pickle", "rb")
    while True:
        try:
            profile = pickle.load(profile_file)
            if not profile:
                break
            print(profile)
        except EOFError: #๋ฐ์ดํ„ฐํŒŒ์ผ์ด ๋น„์–ด์žˆ์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ
            pass
    profile_file.close()
    ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…ก
    {"์ด๋ฆ„":"๊น€์ ๋ก€", "๋‚˜์ด":20, "์ทจ๋ฏธ":["๋…์„œ","๊ณจํ”„"]}
    {"์ด๋ฆ„":"๊น€๋ง์ˆ™", "๋‚˜์ด":23, "์ทจ๋ฏธ":["์ถ•๊ตฌ","๊ฒŒ์ž„"]}

    pickle์— ๋Œ€ํ•ด์„œ ์ถ”๊ฐ€์ ์œผ๋กœ ์•Œ๊ฒŒ๋œ ๊ฒƒ๋“ค์ด ์žˆ์œผ๋ฉด ์ถ”๊ฐ€ํ•  ์˜ˆ์ •! (21.9.28)

    '๐Ÿ | Python > ํŒŒ์ด์ฌ ๋ฌธ๋ฒ•' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    *args ์™€ **kwargs  (0) 2021.10.15
    ํ•จ์ˆ˜์™€ ๋ฉ”์†Œ๋“œ  (0) 2021.10.02
    ํŒŒ์ผ ์ž…์ถœ๋ ฅ  (0) 2021.09.23
    ๋ณ€์ˆ˜์˜ ์œ ํšจ๋ฒ”์œ„  (0) 2021.09.22
    ํ•จ์ˆ˜_(2)  (0) 2021.09.20

    ๋Œ“๊ธ€