๐Ÿ“‚ Python์—์„œ ๋‘ ํŒŒ์ผ์˜ ์ƒ์šฉ์–ด๋ฅผ ๋ณ‘ํ•ฉํ•˜์—ฌ ํŒŒ์ผ ์ฒ˜๋ฆฌ๋ฅผ ์—ฐ์Šตํ•˜๋‹ค

28041 ๋‹จ์–ด algorithmsfilespythontutorial

์•ˆ๋…•ํ•˜์„ธ์š”.๐Ÿ˜


์ด ๊ฐ•์ขŒ์—์„œ ํŒŒ์ผ์—์„œ ๋‹จ์–ด๋ฅผ ์„ ํƒํ•˜๊ณ  ๋น„๊ตํ•˜๋ฉฐ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋‹จ์–ด๋ฅผ ์ƒˆ ํŒŒ์ผ์— ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์„ ๋ฐฐ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฐ์Šต๐Ÿ”

  • ํŒŒ์ดํ†ค์˜ ํŒŒ์ผ ์ฒ˜๋ฆฌ
  • ํŒŒ์ดํ†ค์˜
  • ์ง‘ํ•ฉ
  • ํ•จ์ˆ˜ ์žฌ์‚ฌ์šฉ ์ฝ”๋“œ
  • ์ผ๋ถ€ ๊ธฐ๋ณธ ๋ช…๋ นํ–‰ ๋ช…๋ น
  • ์šฐ๋ฆฌ ์‹œ์ž‘ํ•˜์ž.๐Ÿ


    ์ฝ”๋“œ: ์ด ๊ฐ•์ขŒ์— ํ‘œ์‹œ๋œ ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€github๋กœ ์ „์†ก๋œ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค.

    ์ƒ๋กœ ๋ฅผ ๊ฐœ๋ฐœํ•˜๋‹ค / ๋ณ‘ํ•ฉ


    ๋‘ ํŒŒ์ผ์˜ ๊ณตํ†ต์–ด๋ฅผ ๋‹ค๋ฅธ ํŒŒ์ผ์— ๋ณ‘ํ•ฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ


    ๋ณ‘ํ•ฉ


    ๋‘ ํŒŒ์ผ์˜ ๊ณตํ†ต์–ด๋ฅผ ๋‹ค๋ฅธ ํŒŒ์ผ์— ๋ณ‘ํ•ฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ
    View on GitHub
    ๋จผ์ € Python ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ธด ์„ค๋ช… ํŒŒ์ผ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. merge.py๐Ÿ˜†
    ํ„ฐ๋ฏธ๋„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    ์ฃผ์˜: ๋งŒ์•ฝ ์œˆ๋„์šฐ์ฆˆ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ด ๋ช…๋ น๋“ค์€ ์‹คํ–‰๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ์˜ ํŒŒ์ผ ๊ด€๋ฆฌ์ž์™€ ๊ฐ™์€ ๊ทธ๋ž˜ํ”ฝ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ์ž‘์—…์„ ์™„์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.ํ•˜๋ฉด, ๋งŒ์•ฝ, ๋งŒ์•ฝ...๐ŸŽ, ์•„๋‹ˆ๋ฉด Linux๐Ÿง ๊ธด์žฅ์„ ํ’€๊ณ  ๊ฐ€๋Šฅํ•œ ํ•œ ๋‹จ๋ง๊ธฐ๋ฅผ ๋ฐฐ์šฐ์„ธ์š”.
    Python์€ ์ฃผ๋กœ CLI ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ํ„ฐ๋ฏธ๋„์„ ๋Œ€๋Ÿ‰์œผ๋กœ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ€๋Šฅํ•œ ํ•œ ํ„ฐ๋ฏธ๋„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.๐Ÿ˜€
    touch merge.py
    
    ํ„ฐ์น˜ ๋ช…๋ น์€ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋นˆ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. merge.py์ด์ œ ํ„ฐ๋ฏธ๋„์—์„œ ๋„ํ˜• ํŽธ์ง‘๊ธฐ๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค๐Ÿ˜ฑ, ์ด ๊ฒฝ์šฐ, ๋‚˜๋Š” vscode๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค.
    code ./
    
    UNIX์—์„œ๋Š” (๋‘๋ ค์›Œํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. UNIX ๊ธฐ๋ฐ˜ ์šด์˜์ฒด์ œ, ์˜ˆ๋ฅผ ๋“ค์–ด Linux์™€ Mac), ./ ์ ์€ ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค.
    ์ด์ œ ์ฝ”๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋„๋ก Vscode๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

    ํŒŒ์ดํ†ค์œผ๋กœ ํŒŒ์ผ ์—ด๊ธฐ


    ์šฐ์„ , ์ด ๊ฐ•์ขŒ์—์„œ ์ผ๋ถ€ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.github์—์„œ ์‰ฝ๊ฒŒ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ•์€ ๋ฉ”๋ชจ๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ณต์ œํ•˜๊ฑฐ๋‚˜ ์•„๋ž˜ ๋งํฌ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    text_one.txt
    text_two.txt
    Python์—์„œ ํ•จ์ˆ˜open๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ํ•˜๋Š” ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค.
    ํ…์ŠคํŠธ ํŒŒ์ผ์ด ๋‹ค์šด๋กœ๋“œ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  merge.py ํŒŒ์ผ์— ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    file1 = open("text_one.txt)
    
    ์ด๊ฒƒ์€ ํŒŒ์ผ ๋Œ€์ƒ์ด๊ณ  ๊ธฐ๋ณธ ๋ชจ๋“œ๋Š” '์ฝ๊ธฐ' ์ž…๋‹ˆ๋‹ค.
    ๋ณ€์ˆ˜๋ฅผ ์ธ์‡„ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
    
    print(file1)
    
    # Result
    # <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'>
    
    ์ด ๋ณ€์ˆ˜๋Š” "text one.txt"๋ผ๋Š” ํ…์ŠคํŠธ ํŒŒ์ผ์˜ ํŒŒ์ผ ๊ฐ์ฒด์ผ ๋ฟ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
    ๊ทธ๋Ÿฌ๋‚˜ ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์กฐ์‹ฌํ•ด์•ผ ํ•œ๋‹ค๐Ÿ˜ฑ.
    file1 = open("text_oness.txt")
    
    # FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt'
    
    ๊ทธ๋ž˜์„œ ๋งค๋ฒˆ ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ, ์šฐ๋ฆฌ๋Š” ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ๋ฐฉ์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค
    try:
        file1 = open("text_oness.txt")
    except FileNotFoundError:
        print("Sorry that file doesn't exist")
        exit()
    
    ์šฐ๋ฆฌ๊ฐ€ file1 ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ฒฝ์šฐ ์‹คํ–‰์„ ์ค‘์ง€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    ํŒŒ์ดํ†ค์œผ๋กœ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด exit() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฆ„์ด ๋งํ•œ ๋Œ€๋กœ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    print(file1.read())
    
    # Results
    # Why should you learn to write programs?
    
    # Writing programs (or programming) is a very creative 
    # and rewarding activity. MORE TEXT .....
    
    ํŒŒ์ผ์„ ์—ด๊ณ  ์ฝ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ๋น„๊ต ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    ์šฐ์„  ์ด ๋‘ ํŒŒ์ผ์„ ์—ด ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
    try:
        file1 = open("text_one.txt")
        file2 = open("text_two.txt")
    except FileNotFoundError:
        print("Sorry that file doesn't exist")
        exit()
    
    ํ˜„์žฌ ์šฐ๋ฆฌ๋Š” ํŒŒ์ผ์˜ ๋‚ด์šฉ๊ณผ ์ง‘ํ•ฉ ๋Šฅ๋ ฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ํŒŒ์ผ์˜ ๋ชจ๋“  ๋‹จ์–ด๋ฅผ ์–ป์„ ๊ฒƒ์ด๋‹ค.

    ํŒŒ์ดํ†ค์˜ ์ง‘ํ•ฉ


    Python์˜ ์ง‘ํ•ฉ์€ ๋ฌด์งˆ์„œํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ๋งค์šฐ ํŠน์ˆ˜ํ•œ ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ค‘๋ณต ์š”์†Œ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๐Ÿคซ.
    ์šฐ๋ฆฌ๋Š” ๋ฐ˜๋ณต๋˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์—์„œ ๋‹จ์–ด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ๊ทธ๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค.

    Python์—์„œ ์ง‘ํ•ฉ ๋งŒ๋“ค๊ธฐ


    ํŒŒ์ดํ†ค์— ์ง‘ํ•ฉ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ {file_object}.read() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    empty_set = set()
    

    ์ปฌ๋ ‰์…˜ ๋ฐ ๋ชฉ๋ก:


    mylist = list("122333")
    myset = set("122333")
    
    print(mylist)
    print(myset)
    
    # List:
    # ['1', '2', '2', '3', '3', '3']
    
    # Set
    # {'3', '2', '1'}
    
    ๋ณด์‹œ๋‹ค์‹œํ”ผ ๋ชฉ๋ก์€ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ธ์‡„ํ•˜์ง€๋งŒ ์ง‘ํ•ฉ์€ ์ค‘๋ณต๋˜์ง€ ์•Š๊ณ  ์ˆœ์„œ๊ฐ€ ์—†๋Š” ์š”์†Œ๋งŒ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.

    ํŒŒ์ผ์˜ ํ…์ŠคํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ


    ์šฐ๋ฆฌ๋Š” for๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์˜ ๋‹จ์–ด๋ฅผ ์ˆœํ™˜ํ•ด์„œ ๋ชจ๋“  ํŒŒ์ผ์˜ ์ง‘ํ•ฉ์— ์ถ”๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    file1_words = set()
    
    file2_words = set()
    
    
    for word in file1.read().split():
        file1_words.add(word.lower())
    
    for word in file2.read().split():
        file2_words.add(word.lower())
    
    print(file1_words)
    print(file2_words)
    
    ์œ„์˜ ์ฝ”๋“œ๊ฐ€ ์ข€ ๊ณคํ˜น์Šค๋Ÿฌ์šธ์ง€ ๋ชจ๋ฅด์ง€๋งŒ, ๋นจ๋ฆฌ ๋ด…์‹œ๋‹ค.
    ์šฐ์„  ์šฐ๋ฆฌ๋Š” ๋‘ ๊ฐœ์˜ ์ง‘ํ•ฉ์„ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. ํ•˜๋‚˜๋Š” ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ์— ์‚ฌ์šฉ๋˜๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ์— ์‚ฌ์šฉ๋œ๋‹ค.
    ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” for ์ˆœํ™˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ต์ฒด๋ฅผ ํ•˜๊ณ  ํ˜ธ์ถœset()์„ ํ†ตํ•ด ํŒŒ์ผ์˜ ๋ชจ๋“  ๋‹จ์–ด๋ฅผ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค.
    ์ด ๋ถ€๋ถ„์—์„œ ์šฐ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•file1.read().split()์„ ์‚ฌ์šฉํ•œ๋‹ค. ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๋ฌธ์ž์—ด๋กœ ์ œ๊ณตํ•œ ๋‹ค์Œ์— ๋ฌธ์ž์—ด ๋ฐฉ๋ฒ•read()์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๊ฒƒ์€ ๋นˆ์นธ๋งˆ๋‹ค ๋ฌธ์ž์—ด์„ ๋‚˜๋ˆ„์–ด ํŒŒ์ผ์˜ ๋‹จ์–ด ๋ชฉ๋ก์„ ์ œ๊ณตํ•œ๋‹ค.
    ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ค‘๋ณตํ•œ๋‹ค.
    for word in list_of_words_of_the_file:
        code...
    
    ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์ด ๋‹จ์–ด๋ฅผ ๋ฐ›์•„์„œ ๋‹จ์–ด๊ฐ€ ์ค‘๋ณต๋˜์ง€ ์•Š๋„๋ก ์†Œ๋ฌธ์ž๋กœ ์จ์„œ split() ์ง‘ํ•ฉ์— ์ถ”๊ฐ€ํ–ˆ๋‹ค.ํ•œ ์ง‘ํ•ฉ์— ์ค‘๋ณต๋œ ์š”์†Œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•ด๋ผ. ๋งŒ์•ฝ ํ•œ ๋‹จ์–ด๊ฐ€ ์ด๋ฏธ ์ง‘ํ•ฉ ์•ˆ์— ์žˆ๋‹ค๋ฉด, ๊ทธ๊ฒƒ์€ ์ถ”๊ฐ€๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.
    ์šฐ๋ฆฌ๋Š” ์ด ๋‘ ์„œ๋ฅ˜์— ๋Œ€ํ•ด ๊ฐ™์€ ์ผ์„ ํ•œ๋‹ค.
    ์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‘ ๊ฐœ์˜ ์ง‘ํ•ฉ์„ ๋˜๋Œ๋ ค์ค๋‹ˆ๋‹ค. ๋‘ ํŒŒ์ผ์˜ ๋ชจ๋“  ๋‹จ์–ด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

    ๋„์ „์ž


    ๊ทธ๋Ÿฐ๋ฐ ํ•œ ๊ฐ€์ง€ ์งˆ๋ฌธ์ด ์žˆ์–ด์š”. ๋„์ „ํ• ๊ฒŒ์š”.๐Ÿ”ฅ ํ•ด๊ฒฐํ•ด.
    ์–ด๋–ค ๋‹จ์–ด๋“ค์€ ํŠน์ˆ˜ํ•œ ๋ฌธ์žฅ๋ถ€ํ˜ธ๊ฐ€ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ดfile1_words์™€(on ๋„ˆ์˜ ์ž„๋ฌด๋Š” ๋ชจ๋“  ๋ฌธ์žฅ๋ถ€ํ˜ธ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฐ”๊พธ๋Š”์ง€ ์ฐพ์•„๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ค‘๋ณต๋œ ๋‹จ์–ด๊ฐ€ ์•„๋‹ˆ๋ผ ํŠน์ˆ˜ํ•œ ๋ฌธ์žฅ๋ถ€ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
    ๋‚˜์—๊ฒŒ ์—ฐ๋ฝํ•˜๊ฑฐ๋‚˜, ๋„ค๊ฐ€ ํ•ด๋‚ธ๋‹ค๋ฉด.

    ์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์šฉ์–ด์™€ ๊ต์ฐจํ•˜๋‹ค


    ์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ ๋งŒ๋“  ์ง‘ํ•ฉ์˜ ์ƒ์šฉ์–ด๋ฅผ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๊ต์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    ๋„ค, ์ด ๋‹จ์–ด๋Š” ๋ฌด์„œ์›Œ ๋ณด์ผ ์ˆ˜๋„ ์žˆ์–ด์š”. ์ˆ˜ํ•™์—์„œ ๋ดค์„ ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ๊นŒ ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”.๊ต์ง‘ํ•ฉ์€ ๋‹จ์ง€ ๋‘ ์ง‘ํ•ฉ์˜ ๊ณต๊ณต ๋ถ€๋ถ„์ผ ๋ฟ์ด๋‹ค.

    ๊ต์ฐจ ์›์†Œ๊ฐ€ ์ง€๋ฃจํ•  ์ˆ˜๋„ ์žˆ์–ด์š”.๐Ÿ™„, ๋Œ€๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์›์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ณ€์ˆ˜๋ฅผ ๋‘๋ฃจ ํ›‘์–ด๋ณด๊ณ  ๋น„๊ตํ•˜๊ณ  ์ค‘๋ณต๋œ ๋ณ€์ˆ˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
    ๊ทธ๋Ÿฌ๋‚˜ ํŒŒ์ดํ†ค์—์„œ ์ง‘ํ•ฉ์ด ์žˆ์œผ๋ฉด ์šฐ๋ฆฌ๋Š” ํŠน์ˆ˜ํ•œ ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์ด ๋ชจ๋“  ๊ฒƒ์„ ์™„์„ฑํ•  ์ˆ˜ ์žˆ๋‹คon
    common_words = file1_words.intersection(file2_words)
    
    print(common_words)
    
    ํ˜„์žฌ, ์šฐ๋ฆฌ๋Š” ํ•œ ์ค„์˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ด ๋‘ ํŒŒ์ผ์˜ ์ƒ์šฉ์–ด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

    ํŒŒ์ดํ†ค์œผ๋กœ ํŒŒ์ผ ์ž‘์„ฑ


    ํŒŒ์ดํ†ค์œผ๋กœ ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค.์šฐ๋ฆฌ๋Š” {set1}.intersection({set2}) ์“ฐ๊ธฐ ๋ชจ๋“œ๋กœ ํŒŒ์ผ์„ ์—ด์—ˆ๋‹ค.
    ์ด๊ฒƒ์€ ๊ธฐ์กด ํŒŒ์ผ์„ ์“ฐ๊ฑฐ๋‚˜ ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์—์„œ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ •ํ•˜๋Š” ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
    ๋ณ‘ํ•ฉ ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค.
    merge_file = open("merge.txt", mode = "w")
    
    # code_here ....
    
    merge_file.close()
    
    ํŒŒ์ผ์„ ์“ฐ๊ธฐ ๋ชจ๋“œ๋กœ ์—ด ๋•Œ๋งˆ๋‹ค ํ•„์š”ํ•œ ์ž‘์—…์„ ํ•œ ํ›„์— ๋‹ซ์•„์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค.
    ํ˜„์žฌ ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ์ƒ์šฉ์–ด๋ฅผ ์ƒˆ open("file/path", mode = "w") ํŒŒ์ผ์— ์“ธ ๊ฒƒ์ด๋‹ค.
    merge_file = open("merge.txt", mode = "w")
    
    for word in common_words:
       word = word + ", "
       merge_file.write(word)
    
    merge_file.close()
    
    ํŒŒ์ผ์˜ ๋‹จ์–ด๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๋‹จ์–ด์˜ ๋์— ์‰ผํ‘œ ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    ์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    try:
        file1 = open("text_one.txt")
        file2 = open("text_two.txt")
    except FileNotFoundError:
        print("Sorry that file doesn't exist")
        exit()
    
    
    file1_words = set()
    
    file2_words = set()
    
    
    for word in file1.read().split():
    
        file1_words.add(word.lower())
    
    for word in file2.read().split():
    
        file2_words.add(word.lower())
    
    
    common_words = file1_words.intersection(file2_words)
    
    merge_file = open("merge.txt", mode="w")
    
    for word in common_words:
        word = word + ", "
        merge_file.write(word)
    
    merge_file.close()
    
    
    ์ƒˆ merge.txt ํŒŒ์ผ์„ ๊ฒ€์‚ฌํ•˜๋ฉด, ํŒŒ์ผ "merge.txt"๊ณผ text_one.txt ์‚ฌ์ด์˜ ๋ชจ๋“  ์ƒ์šฉ์–ด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
    ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค.๐ŸŽ‰, ์ฝ”๋“œ ํŒŒ์ผ์„ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ํ†ตํ•ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
    ๊ทธ๋Ÿฌ๋‚˜ ์ž ๊น๋งŒ, ์ด ์ฝ”๋“œ๋Š” ๋งค์šฐ ๋ฌด๊ฑฐ์›Œ์„œ ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ๊ณณ์—์„œ ๊ฐ™์€ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ–ˆ๋‹ค.
    ๋”ฐ๋ผ์„œ ํ•จ์ˆ˜์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์ฝ”๋“œ๋ฅผ ํ™•์žฅํ•˜๊ธฐ ์‰ฝ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
    ์šฐ์„ , ํŒŒ์ผ์„ ์—ด๊ณ  ์ด์ƒ์„ ์ฒ˜๋ฆฌํ•  ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.์ด ํ•จ์ˆ˜๋Š” ๋‘ ๊ฐœ์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์•„๋“ค์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ํŒŒ์ผ ๊ฒฝ๋กœ์ด๊ณ , ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ํŒŒ์ผ ์—ด๊ธฐ ๋ชจ๋“œ์˜ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋งค๊ฐœ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.
    # Python function that handle exception while opening files
    
    def open_file(file_path, open_mode="r"):
    
        try:
            file_handler = open(file_path, mode=open_mode)
    
        except FileNotFoundError:
            print(f"Sorry the file {file_path} doesn't exist")
            exit()
    
        except ValueError:
            print(f"Sorry the file {file_path} can't be opened with mode {open_mode}")
            exit()
    
        return file_handler            
    
    ๊ทธ ๋‹ค์Œ์€ ํŒŒ์ผ์˜ ๋‹จ์–ด๋ฅผ ํฌ์ฐฉํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
    def get_file_words(file_path):
    
        file_words = set()
    
        read_file = open_file(file_path)
    
        for word in read_file.read().split():
    
            file_words.add(word.lower())
        return file_words
    
    
    ๋ณด์‹œ๋‹ค์‹œํ”ผ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ํ•˜๊ณ , ๋‹จ์–ด๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉฐ, ๋ฐฉ๊ธˆ ๋งŒ๋“  text_two.txt ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํŒŒ์ผ ์ฒ˜๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
    ๋งˆ์ง€๋ง‰์œผ๋กœ, ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋‹จ์–ด๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ๊ต์ฐจํ•˜๋Š” ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ์ด ๋‹จ์–ด๋“ค์„ ํŒŒ์ผ์— ๊ธฐ๋กํ•  ํ•จ์ˆ˜ open_file() ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    def merge(*filenames, merge_file="merge.txt"):
    
        list_of_file_words = []
    
        for filename in filenames:
    
            file_words = get_file_words(filename)
            list_of_file_words.append(file_words)
    
        common_words = set.intersection(*list_of_file_words)
    
        merge_write_file = open_file(merge_file, "w")
    
        for word in common_words:
    
            word = word + ", "
    
            merge_write_file.write(word)
    
        merge_write_file.close()
    
    
    ์—ฌ๊ธฐ์„œpython ํ•จ์ˆ˜์—์„œ merge ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐœ ์ด์ƒ์˜ ํŒŒ์ผ์„ ํ•ฉ์น˜๋ ค๋ฉด ํ•จ์ˆ˜์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ผ ์ด๋ฆ„์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ๋‚ด๊ฐ€ for ์ˆœํ™˜์„ ์‚ฌ์šฉํ•˜์—ฌ *args ์ธ์ž๋ฅผ ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ํ˜„์žฌ ์ž„์˜์˜ ํŒŒ์ผ ์ด๋ฆ„์„ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์šฐ๋ฆฌ์˜ ํ†ตํ•ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ˜„์žฌ ๋”์šฑ ๊ฐ•๋ ฅํ•ด์กŒ๋‹ค.

    main () ํ•จ์ˆ˜์—์„œ ์ฝ”๋“œ ์••์ถ•


    python์—์„œ ๊ฐ€์žฅ ์ข‹์€ ์‹ค์ฒœ์œผ๋กœ *filename ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰ํ•˜๋Š” ๋ชจ๋“  ๋™์ž‘์„ ํ˜ธ์ถœํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    def main():
    
        file1 = "text_one.txt"
    
        file2 = "text_two.txt"
    
        merge(file1, file2, merge_file = "main_merge.txt")
    
    ์ด ์ฃผ ํ•จ์ˆ˜๋Š”merge ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  file1๊ณผ file2 ๋ณ€์ˆ˜๋ฅผ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.๊ทธ ๋ฐ–์— ์šฐ๋ฆฌ๋Š” main() ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ–ˆ๋Š”๋ฐ, ์ด ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ํ•ฉ๋ณ‘ ํ•จ์ˆ˜์— ์–ด๋–ค ํŒŒ์ผ์„ ์จ์•ผ ํ•˜๋Š”์ง€ ์•Œ๋ ค ์ค€๋‹ค.
    ๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์ด ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐ”์™€ ๊ฐ™์ด, ์šฐ๋ฆฌ๋Š” ์•„์ง ์–ด๋–ค ํ•จ์ˆ˜๋„ ํ˜ธ์ถœํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์—main ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ์‹œ๋‹ค.
    if __name__ == "__main__":
        main()
    
    merge_file ๋ณ€์ˆ˜๋Š” ๋‹ค๋ฅธ ๋ธ”๋กœ๊ทธ๋ฅผ ๋ฐœํ‘œํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ๋Š”python์— ๊ธฐ๋ณธ์ ์œผ๋กœ ์•Œ๋ ค์ค€๋‹ค.
  • ํ—ค์ด, ์ ์›๐Ÿฅธ, ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰๋˜๋Š”python ํŒŒ์ผ์ด๋ผ๋ฉด __name__ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.
  • ๊ทธ๋ž˜์„œ ์ด ์ฟจ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ตœ์ข… ์ฝ”๋“œ๋Š”:
    def open_file(file_path, open_mode="r"):
    
        try:
            file_handler = open(file_path, mode=open_mode)
    
        except FileNotFoundError:
            print(f"Sorry the file {file_path} doesn't exist")
            exit()
    
        except ValueError:
            print(f"Sorry the file {file_path} can't be opened with mode {open_mode}")
            exit()
    
        return file_handler            
    
    
    def get_file_words(file_path):
    
        file_words = set()
    
        read_file = open_file(file_path)
    
        for word in read_file.read().split():
    
            file_words.add(word.lower())
    
        return file_words
    
    def merge(*filenames, merge_file="merge.txt"):
    
        list_of_file_words = []
    
        for filename in filenames:
    
            file_words = get_file_words(filename)
            list_of_file_words.append(file_words)
    
        common_words = set.intersection(*list_of_file_words)
    
        merge_write_file = open_file(merge_file, "w")
    
        for word in common_words:
    
            word = word + ", "
    
            merge_write_file.write(word)
    
        merge_write_file.close()
    
    
    
    def main():
    
        file1 = "text_one.txt"
    
        file2 = "text_two.txt"
    
        merge(file1, file2, merge_file="merge_main.txt")
    
    
    if __name__ == "__main__":
        main()
    

    ๊ฒฐ๋ก :


    ์ด ์ž์Šต์„œ์—์„œ๋Š” ๋‹ค์Œ์„ ์—ฐ์Šตํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํŒŒ์ดํ†ค์˜ ํŒŒ์ผ ์ฒ˜๋ฆฌ
  • ํŒŒ์ดํ†ค์˜ ์ง‘ํ•ฉ๊ณผ ๋ชฉ๋ก
  • for ์ˆœํ™˜์˜ ๊ต์ฒด
  • ์‚ฌ์šฉ
  • ํ•จ์ˆ˜ ์ •์˜์™€ ์‚ฌ์šฉ๋ฒ•
  • ํŒŒ์ดํ†ค ์ฃผํ•จ์ˆ˜ ์ตœ์  ์‹ค์ฒœ
  • ์ด ๊ฐ•์ขŒ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ์ €์—๊ฒŒ ์—ฐ๋ฝํ•˜๊ฑฐ๋‚˜ Github repo์—์„œ ์š”์ฒญํ•˜์‹ญ์‹œ์˜ค

    Follow me in My blog,
    to get more awesome tutorials like this one.
    Please consider supporting me on Ko-fi you help me a lot to
    continue building this tutorials!.

    ์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ