ํ์ผ์ ๋ฉํ์ ๋ฐ์ดํฐ๋ฅผ ํตํด ๋น ๋ฅด๊ฒ ํ์ผ์ ๋น๊ตํ ์ ์๊ฑฐ๋
ํ์ผ ์์ฒด ๋ฐ์ดํฐ๋ฅผ ํตํด ๋น๊ตํ ์ ์์ต๋๋ค.
๋๋ ํ ๋ฆฌ(Directory) ์์ฒด๋ ํ์ผ์ด์ง๋ง, ํผ๋์ ๋ฐฉ์งํ๊ธฐ ์ํด์ ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ตฌ๋ถํด์ ์์ฑํ์ต๋๋ค
-
functions
-
filecmp.cmp - ํ์ผ vs ํ์ผ
-
filecmp.cmpfiles - ๋๋ ํ ๋ฆฌ vs ๋๋ ํ ๋ฆฌ
-
filecmp.clear_cache - ์บ์ ์ง์ฐ๊ธฐ
-
-
class
- filecmp.dircmp - ๋๋ ํ ๋ฆฌ vs ๋๋ ํ ๋ฆฌ (๋ค์ํ ์กฐ๊ฑด์ผ๋ก ๋น๊ตํ๊ธฐ)
cmp(f1, f2, shallow = True) -> Bool
shallow = True์ธ ๊ฒฝ์ฐ
os.stat() ์ ์ด์ฉํด์ ํ์ผ์ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ ๋น๊ต๋ฅผ ํ๋ค.
False์ธ ๊ฒฝ์ฐ ์ง์ ํ์ผ์ ์ด์ง ๋ชจ๋๋ก ์ฝ์ด ๋ค์ฌ์ ๋น๊ต๋ฅผ ํ๋ค.
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 : ํ์ผ์ด ์กด์ฌํ์ง ์๊ฑฐ๋, ํ์ผ ์ฝ๊ธฐ ๊ถํ์ด ์๊ฑฐ๋, ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ
clear_cache()
filecmp ํจ์๊ฐ ์คํ๋๊ณ ๋ ํ ์บ์์ ์ ์ฅ๋๋ฏ๋ก ๋น๊ตํ๋ ํ์ผ์ด ๋ณ๊ฒฝ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ ์บ์๋ฅผ ์ง์ฐ๋ ํจ์์ ๋๋ค.
cache exampledircmp(a, b, ignore = None, hide = None)
๋๋ ํ ๋ฆฌ a์ b๋ฅผ ๋น๊ตํ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค.
์ธ๋ฒ์งธ ํค์๋ ์ธ์ ignore๋ ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๋น๊ตํ ๋ ๋ฌด์ํ ํ์ผ์ ์๋ฏธํฉ๋๋ค.
ignore์ ๊ธฐ๋ณธ๊ฐ์ filecmp.DEAFAULT_IGNORE์ผ๋ก ์บ์ ํ์ผ ๊ฐ์ด ์๋์ผ๋ก ์์ฑ๋๋ ํ์ผ๋ค์
๋๋ค.
๋ค๋ฒ์งธ ํค์๋ ์ธ์ hide๋ ํ์ผ ๋น๊ตํ ๋ฐํํ๋ ํ์ผ ๊ฒฝ๋ก์ ์๋ตํ ๋ถ๋ถ์ ์๋ฏธํฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ [os.curdir, os.pardir]์ผ๋ก ํ์ฌ ๋๋ ํ ๋ฆฌ, ์์ ๋๋ ํ ๋ฆฌ์
๋๋ค.
์๋๋ dircmp ํด๋์ค์ ๋ฉ์๋์ ์ธ์คํด์ค์
๋๋ค.
dircmp์ ์์ฑ์ __getattr__()์ ํธ์ถํจ๊ณผ ๋์์ ์ฐ์ฐ์ด ์ด๋ฃจ์ด์ง๋๋ค(์ง์ฐ ์ฐ์ฐ - lazy computing).
๋ฉ์๋๊ฐ ์๋๋ผ๊ณ ๊ฐ์ด ๋ฏธ๋ฆฌ ์ ์ฅ๋์ด ์๋ ํํ๊ฐ ์๋๋๋ค.
-
report() -> None
๋๋ ํ ๋ฆฌ a, b ๋น๊ตํ ๊ฒ์ ์ถ๋ ฅํฉ๋๋ค.
-
report_partial_closure() -> None
๋๋ ํ ๋ฆฌ a, b ๋ด๋ถ์ ํ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ท๋ฉ์ ์ผ๋ก ํ์ํ์ง ์๊ณ ๋น๊ตํฉ๋๋ค.
์ฆ, ๋๋ ํ ๋ฆฌ๋ฅผ ํ๋์ ํ์ผ๋ก ๊ฐ์ฃผํ ์ฑ๋ก ๋น๊ตํฉ๋๋ค.
-
report_full_closure() -> None
๋๋ ํ ๋ฆฌ a, b ๋ด๋ถ์ ํ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ท๋ฉ์ ์ผ๋ก ํ์ ํ ๋น๊ตํฉ๋๋ค.
์ฆ, ๋๋ ํ ๋ฆฌ ๋ด๋ถ์ ๋๋ ํ ๋ฆฌ๊น์ง ๊ท๋ฉ์ ์ผ๋ก ํ์ํ๊ณ ๋น๊ตํฉ๋๋ค.
-
left :
str๋๋ ํ ๋ฆฌ ์ด๋ฆ์ธ ์ฒซ๋ฒ์งธ ์ธ์ a๋ฅผ ๋ฐํํฉ๋๋ค
-
right :
str๋๋ ํ ๋ฆฌ ์ด๋ฆ์ธ ๋๋ฒ์งธ ์ธ์ b๋ฅผ ๋ฐํํฉ๋๋ค
-
left_list :
list์ธ๋ฒ์งธ ์ธ์ hide์ ๋ค๋ฒ์งธ ์ธ์ ignore๋ฅผ ์ ์ธํ ์ฒซ๋ฒ์งธ ๋๋ ํ ๋ฆฌ ์ธ์ a์ ํ์ผ๊ณผ ์๋ธ ๋๋ ํ ๋ฆฌ๊ฐ ์๋ ๋ฆฌ์คํธ๋ฅผ ๋ฐํํฉ๋๋ค
-
right_list :
list์ธ๋ฒ์งธ ์ธ์ hide์ ๋ค๋ฒ์งธ ์ธ์ ignore๋ฅผ ์ ์ธํ ๋๋ฒ์งธ ๋๋ ํ ๋ฆฌ ์ธ์ b์ ํ์ผ๊ณผ ์๋ธ ๋๋ ํ ๋ฆฌ๊ฐ ์๋ ๋ฆฌ์คํธ๋ฅผ ๋ฐํํฉ๋๋ค
-
common :
lista, b ๋๋ ํ ๋ฆฌ์ ๊ณตํต์ผ๋ก ์๋ ํ์ผ๊ณผ ์๋ธ ๋๋ ํ ๋ฆฌ๊ฐ ๋ด๊ธด ๋ฆฌ์คํธ๋ฅผ ๋ฐํํฉ๋๋ค.
-
left_only :
lista ๋๋ ํ ๋ฆฌ์๋ง ์๋ ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฐํํฉ๋๋ค.
-
right_only :
listb ๋๋ ํ ๋ฆฌ์๋ง ์๋ ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฐํํฉ๋๋ค.
-
common_dirs :
lista, b ๋๋ ํ ๋ฆฌ์ ๊ณตํต์ผ๋ก ์กด์ฌํ๋ ๋๋ ํ ๋ฆฌ๋ค์ ๋ฐํํฉ๋๋ค.
-
common_files :
lista, b ๋๋ ํ ๋ฆฌ์ ๊ณตํต์ผ๋ก ์กด์ฌํ๋ ํ์ผ๋ค์ ๋ฐํํฉ๋๋ค.
-
common_funny :
listํ์ผ ๋น๊ต ์ฐ์ฐ์(
shallow = True)์ ์ฐ์ด๋os.stat()์ด ๊ถํ ๋ฌธ์ ๋๋ ๋ค๋ฅธ ๋ฌธ์ ๋ก ์ธํด์ ์๋ฌ๋ฅผ ๋์ง ํ์ผ, ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง์ง๋ง, ๋ค๋ฅธ ํ์ (ํ์ฅ์)๋ฅผ ๊ฐ์ง๋ ํ์ผ๋ค์ ๋ฐํํฉ๋๋ค. -
same_files :
lista, b ๋๋ ํ ๋ฆฌ์ ๊ณตํต์ผ๋ก ์กด์ฌํ๋ ํ์ผ๋ค์ ๋ฐํํฉ๋๋ค.
-
diff_files :
lista, b ๋๋ ํ ๋ฆฌ์ ๊ณตํต์ผ๋ก ์กด์ฌํ์ง ์๋ ํ์ผ๋ค์ ๋ฐํํฉ๋๋ค.
-
funny_files :
dict -
subdirs