Skip to content

Latest commit

ย 

History

History
193 lines (98 loc) ยท 5.69 KB

File metadata and controls

193 lines (98 loc) ยท 5.69 KB

filecmp - ํŒŒ์ผ์ด ๊ฐ™์€์ง€ ๋‹ค๋ฅธ์ง€ ๋น„๊ตํ•  ๋•Œ

ํŒŒ์ผ์˜ ๋ฉ”ํƒ€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ๋น ๋ฅด๊ฒŒ ํŒŒ์ผ์„ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜

ํŒŒ์ผ ์ž์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋””๋ ‰ํ† ๋ฆฌ(Directory) ์ž์ฒด๋„ ํŒŒ์ผ์ด์ง€๋งŒ, ํ˜ผ๋™์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ตฌ๋ถ„ํ•ด์„œ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค

๋ชฉ๋ก

  • functions

    • filecmp.cmp - ํŒŒ์ผ vs ํŒŒ์ผ

    • filecmp.cmpfiles - ๋””๋ ‰ํ† ๋ฆฌ vs ๋””๋ ‰ํ† ๋ฆฌ

    • filecmp.clear_cache - ์บ์‹œ ์ง€์šฐ๊ธฐ

  • class

    • filecmp.dircmp - ๋””๋ ‰ํ† ๋ฆฌ vs ๋””๋ ‰ํ† ๋ฆฌ (๋‹ค์–‘ํ•œ ์กฐ๊ฑด์œผ๋กœ ๋น„๊ตํ•˜๊ธฐ)

functions

filecmp.cmp

cmp(f1, f2, shallow = True) -> Bool

shallow = True์ธ ๊ฒฝ์šฐ

os.stat() ์„ ์ด์šฉํ•ด์„œ ํŒŒ์ผ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•œ ๋น„๊ต๋ฅผ ํ•œ๋‹ค.

False์ธ ๊ฒฝ์šฐ ์ง์ ‘ ํŒŒ์ผ์„ ์ด์ง„ ๋ชจ๋“œ๋กœ ์ฝ์–ด ๋“ค์—ฌ์„œ ๋น„๊ต๋ฅผ ํ•œ๋‹ค.


filecmp.cmpfiles

cmpfiles(dir1, dir2, common, shallow = True) -> (list, list, list)

๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ์ธ ์ฒซ๋ฒˆ์งธ์™€ ๋‘๋ฒˆ์งธ ์ธ์ž dir1์™€ dir2๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

filecmp.cmp ํ•จ์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์„ธ๋ฒˆ์งธ ์ธ์ž shallow์˜ ๊ธฐ๋ณธ๊ฐ’์€ True์ด๋ฉฐ, ํŒŒ์ผ ๋น„๊ต๋ฅผ ํ•  ๋•Œ ํŒŒ์ผ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

False์˜ ๊ฒฝ์šฐ ์ง์ ‘ ํŒŒ์ผ ๋ฐ”์ดํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์œผ๋ฉฐ ๋น„๊ต๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

์„ธ๋ฒˆ์งธ ํ‚ค์›Œ๋“œ ์ธ์ž common์—๋Š” ๋น„๊ตํ•  ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด๋ถ€์˜ ํŒŒ์ผ ์ด๋ฆ„์ด ํฌํ•จ๋œ **๋ฆฌ์ŠคํŠธ(list)**๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค

์ƒ๋Œ€ ๊ฒฝ๋กœ **'./MyApp/temp'**์™€ **'./YourApp/temp'**์—์„œ 'C.txt'๋ผ๋Š” ํŒŒ์ผ๊ณผ 'Secret'์ด๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด๋ถ€์˜ 'password.txt'๋ผ๋Š” ํŒŒ์ผ์„ ๋น„๊ตํ•˜๋Š” ์˜ˆ์‹œ:

from filrcmp import cmpfiles

# ๋ฆฌ์ŠคํŠธ 3๊ฐœ์˜ ํŠœํ”Œ์ด ๋ฐ˜ํ™˜๋˜๋ฏ€๋กœ ์ด๋ ‡๊ฒŒ ์–ธํŒจํ‚นํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค
match, mismatch,  errors = cmpfiles('./MyApp/temp', './YourApp/temp', ['C.txt', 'Secret/password.txt'])

๋ฐ˜ํ™˜๊ฐ’์˜ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค

ํŒŒ์ผ์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด **3๊ฐœ์˜ ๋ฆฌ์ŠคํŠธ(list)**๊ฐ€ ๋‹ด๊ธด ํŠœํ”Œ(tuple)์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ฒซ๋ฒˆ์งธ ๋ฆฌ์ŠคํŠธ match : ๊ฐ™์€ ํŒŒ์ผ ์ด๋ฆ„์ด ๋‹ด๊ฒจ์žˆ์Šต๋‹ˆ๋‹ค

๋‘๋ฒˆ์งธ ๋ฆฌ์ŠคํŠธ mismatch : ๊ฐ™์ง€ ์•Š์€ ํŒŒ์ผ ์ด๋ฆ„์ด ๋‹ด๊ฒจ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ

์„ธ๋ฒˆ์งธ ๋ฆฌ์ŠคํŠธ errors : ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ํŒŒ์ผ ์ฝ๊ธฐ ๊ถŒํ•œ์ด ์—†๊ฑฐ๋‚˜, ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ


filecmp.clear_cache

clear_cache()

filecmp ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ณ  ๋‚œ ํ›„ ์บ์‹œ์— ์ €์žฅ๋˜๋ฏ€๋กœ ๋น„๊ตํ•˜๋Š” ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์บ์‹œ๋ฅผ ์ง€์šฐ๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

cache example

class

dircmp

dircmp(a, b, ignore = None, hide = None)

๋””๋ ‰ํ† ๋ฆฌ a์™€ b๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์„ธ๋ฒˆ์งธ ํ‚ค์›Œ๋“œ ์ธ์ž ignore๋Š” ๋‘ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋น„๊ตํ•  ๋•Œ ๋ฌด์‹œํ•  ํŒŒ์ผ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

ignore์˜ ๊ธฐ๋ณธ๊ฐ’์€ filecmp.DEAFAULT_IGNORE์œผ๋กœ ์บ์‹œ ํŒŒ์ผ ๊ฐ™์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ํŒŒ์ผ๋“ค์ž…๋‹ˆ๋‹ค.

๋„ค๋ฒˆ์งธ ํ‚ค์›Œ๋“œ ์ธ์ž hide๋Š” ํŒŒ์ผ ๋น„๊ตํ›„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํŒŒ์ผ ๊ฒฝ๋กœ์˜ ์ƒ๋žตํ•  ๋ถ€๋ถ„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’์€ [os.curdir, os.pardir]์œผ๋กœ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ, ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค.


์•„๋ž˜๋Š” dircmp ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์™€ ์ธ์Šคํ„ด์Šค์ž…๋‹ˆ๋‹ค.

dircmp์˜ ์†์„ฑ์€ __getattr__()์„ ํ˜ธ์ถœํ•จ๊ณผ ๋™์‹œ์— ์—ฐ์‚ฐ์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค(์ง€์—ฐ ์—ฐ์‚ฐ - lazy computing).

๋ฉ”์„œ๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ๊ฐ’์ด ๋ฏธ๋ฆฌ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ํ˜•ํƒœ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.


dircmp - method

  • report() -> None

    ๋””๋ ‰ํ† ๋ฆฌ a, b ๋น„๊ตํ•œ ๊ฒƒ์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  • report_partial_closure() -> None

    ๋””๋ ‰ํ† ๋ฆฌ a, b ๋‚ด๋ถ€์˜ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ท€๋‚ฉ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜์ง€ ์•Š๊ณ  ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

    ์ฆ‰, ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๊ฐ„์ฃผํ•œ ์ฑ„๋กœ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

  • report_full_closure() -> None

    ๋””๋ ‰ํ† ๋ฆฌ a, b ๋‚ด๋ถ€์˜ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ท€๋‚ฉ์ ์œผ๋กœ ํƒ์ƒ‰ ํ›„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

    ์ฆ‰, ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด๋ถ€์˜ ๋””๋ ‰ํ† ๋ฆฌ๊นŒ์ง€ ๊ท€๋‚ฉ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ณ  ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.


dircmp - attributes

  • left : str

    ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„์ธ ์ฒซ๋ฒˆ์งธ ์ธ์ž a๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค

  • right : str

    ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„์ธ ๋‘๋ฒˆ์งธ ์ธ์ž b๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค

  • left_list : list

    ์„ธ๋ฒˆ์งธ ์ธ์ž hide์™€ ๋„ค๋ฒˆ์งธ ์ธ์ž ignore๋ฅผ ์ œ์™ธํ•œ ์ฒซ๋ฒˆ์งธ ๋””๋ ‰ํ† ๋ฆฌ ์ธ์ž a์˜ ํŒŒ์ผ๊ณผ ์„œ๋ธŒ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค

  • right_list : list

    ์„ธ๋ฒˆ์งธ ์ธ์ž hide์™€ ๋„ค๋ฒˆ์งธ ์ธ์ž ignore๋ฅผ ์ œ์™ธํ•œ ๋‘๋ฒˆ์งธ ๋””๋ ‰ํ† ๋ฆฌ ์ธ์ž b์˜ ํŒŒ์ผ๊ณผ ์„œ๋ธŒ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค

  • common : list

    a, b ๋””๋ ‰ํ† ๋ฆฌ์— ๊ณตํ†ต์œผ๋กœ ์žˆ๋Š” ํŒŒ์ผ๊ณผ ์„œ๋ธŒ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋‹ด๊ธด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • left_only : list

    a ๋””๋ ‰ํ† ๋ฆฌ์—๋งŒ ์žˆ๋Š” ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • right_only : list

    b ๋””๋ ‰ํ† ๋ฆฌ์—๋งŒ ์žˆ๋Š” ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • common_dirs : list

    a, b ๋””๋ ‰ํ† ๋ฆฌ์— ๊ณตํ†ต์œผ๋กœ ์กด์žฌํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋“ค์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • common_files : list

    a, b ๋””๋ ‰ํ† ๋ฆฌ์— ๊ณตํ†ต์œผ๋กœ ์กด์žฌํ•˜๋Š” ํŒŒ์ผ๋“ค์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • common_funny : list

    ํŒŒ์ผ ๋น„๊ต ์—ฐ์‚ฐ์‹œ(shallow = True)์— ์“ฐ์ด๋Š” os.stat()์ด ๊ถŒํ•œ ๋ฌธ์ œ ๋˜๋Š” ๋‹ค๋ฅธ ๋ฌธ์ œ๋กœ ์ธํ•ด์„œ ์—๋Ÿฌ๋ฅผ ๋˜์ง„ ํŒŒ์ผ, ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง€์ง€๋งŒ, ๋‹ค๋ฅธ ํƒ€์ž…(ํ™•์žฅ์ž)๋ฅผ ๊ฐ€์ง€๋Š” ํŒŒ์ผ๋“ค์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • same_files : list

    a, b ๋””๋ ‰ํ† ๋ฆฌ์— ๊ณตํ†ต์œผ๋กœ ์กด์žฌํ•˜๋Š” ํŒŒ์ผ๋“ค์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • diff_files : list

    a, b ๋””๋ ‰ํ† ๋ฆฌ์— ๊ณตํ†ต์œผ๋กœ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ๋“ค์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • funny_files : dict

  • subdirs