Pythonã§ã¢ããªãã¹ã¯ãªãããæžãå§ãããšãã»ãŒå¿ ãç»å Žããã®ãããã©ã«ãããã¡ã€ã«ã®ãã¹æäœãã§ããèšå®ãã¡ã€ã«ãèªã¿èŸŒãã ãããã°ãæžãåºããããç»åããŸãšããŠãªããŒã ãããâŠæ¥ã ã®èªååã«ã¯æ¬ ãããªãåŠçã§ãããã
ãšãããPythonã«ã¯ osã»globã»pathlib ãš 3ã€ã®æšæºã¢ãžã¥ãŒã« ãçšæãããŠããŠãåå¿è
ã»ã©ãã©ãã䜿ãã°ããã®ïŒããšè¿·ã£ãŠããŸããã¡ã§ããæ¬çš¿ã§ã¯ãçŸä»£ã®Pythonã§ãã£ãšãããããããã pathlib ãäžå¿ã«ããã¹æäœã®åºæ¬ãããã£ã¬ã¯ããªã®ååž°ååŸããã¡ã€ã«äœæã»åé€ãŸã§ãäžæ°ã«æŽçããŸããèªã¿çµããé ã«ã¯ãããªãã®ã³ãŒãããã£ãšã·ã³ãã«ã§èªã¿ããããªã£ãŠããã¯ãã§ãâš
æ¬é¡ã«å ¥ãåã«ãæ··ä¹±ããã¡ãªçšèªãããåãããŠãããŸãããã
C:\ãªã©ïŒãã蟿ã£ãå®å
šãªãã¹ã./ã1ã€äžã¯ ../ ã§è¡šããŸããPythonã®æšæºã©ã€ãã©ãªã«ã¯ããã¹æäœçšã®ã¢ãžã¥ãŒã«ã3çš®é¡çšæãããŠããŸãã
ãã£ãšãæŽå²ãé·ãããã¹çµåã»åå²ã»ååšç¢ºèªãªã©äžéãã®æäœãå¯èœã§ãããã os åäœã§æžããšã颿°ãå
¥ãåã«ããå¿
èŠããããã³ãŒããããåé·ã«ãªããã¡ã
ã¯ã€ã«ãã«ãŒãïŒ* ã ?ïŒã䜿ã£ããã¿ãŒã³ãããã§ãååž°çã«ãã£ã¬ã¯ããªå
ãæ€çŽ¢ã§ããã¢ãžã¥ãŒã«ã§ããos ã ãã ãšé¢åãªãç¹å®æ¡åŒµåã®ãã¡ã€ã«ã ãéããããšãã£ãåŠçãåŸæã
Python 3.4ã§å°å
¥ãããæ¯èŒçæ°ããã¢ãžã¥ãŒã«ã§ããã¹ããªããžã§ã¯ããšããŠæ±ãã®ãæå€§ã®ç¹åŸŽãå
¬åŒããã¥ã¡ã³ãã§ããos.path ã glob ãã髿°Žæºããšè¡šèšãããŠãããããäžã€ã§ãã¹æäœã®ã»ãŒãã¹ãŠãè³ããŸããæåã¯æœè±¡åºŠã®é«ãã«æžæããããããŸããããæ
£ãããšãã¡ãã®ã»ããå§åçã«æžãããããèªã¿ãããã³ãŒãã«ãªããŸãã
ãŸã㯠from pathlib import Path ã§ã€ã³ããŒããããšã¯å¯Ÿè±¡ãã£ã¬ã¯ããªãæååã§æž¡ãã ãã§ãã¹ãªããžã§ã¯ããäœããŸãã
from pathlib import Path
# ã«ã¬ã³ããã£ã¬ã¯ããª
path = Path.cwd()
print(path)
# ãã¹ãé£çµïŒã¹ã©ãã·ã¥æŒç®åã䜿ããïŒïŒ
dir1 = path / "directory1"
print(dir1)
WindowsãšMacã§å
éšçãªã¯ã©ã¹ã¯ç°ãªããŸãïŒWindowsPath / PosixPathïŒããå©çšè
ã¯æèããã«åãã³ãŒãã§æžããŸãã
ãã¹æäœã§æãé »ç¹ã«è¡ãã®ãããããã£ã¬ã¯ããªã®äžèº«äžèЧã®ååŸãã§ããiterdir() ã䜿ãã°ããã®éå±€ã«ãããã¡ã€ã«ãšãµããã£ã¬ã¯ããªã®ãã¹ãªããžã§ã¯ãããžã§ãã¬ãŒã¿ãŒã§ååŸã§ããŸãã
for p in dir1.iterdir():
print(p.name) # ãã¡ã€ã«åã»ãã£ã¬ã¯ããªåã®ã¿
print(str(p)) # æååãšããŠã®ãã«ãã¹
# ãªã¹ãå
å
衚èšã§ãŸãšããŠååŸ
names = [p.name for p in dir1.iterdir()]
print()ã§è¡šç€ºãããšæååã®ããã«èŠããŸãããäžèº«ã¯ãã¹ãªããžã§ã¯ããæååãå¿
èŠãªã str() ã§å€æããŠãããŸãããã
p.is_file()ïŒãã¡ã€ã«ãªã Truep.is_dir()ïŒãã£ã¬ã¯ããªãªã Truep.exists()ïŒå®éã«ååšããŠãããªã Trueiterdir() ã¯åãéå±€ããååŸããŸããããµããã£ã¬ã¯ããªã®äžãŸã§ãŸãã£ãšååŸããããšãã¯ãpathlib ã® glob() ã¡ãœããã䟿å©ã§ãã
# é
äžã®ãã¹ãŠã®ãã¡ã€ã«ã»ãã£ã¬ã¯ããªãååž°ååŸ
for p in dir1.glob("**/*"):
print(p.name)
# .txt ãã¡ã€ã«ã ãååž°ååŸ
for p in dir1.glob("**/*.txt"):
print(p.name)
** ããååž°çã«ä»»æéå±€ãã* ãã0æå以äžã®ä»»ææåããæå³ããŸããæ£èŠè¡šçŸãšãã·ã§ã«ã®globãšãå°ãéãã®ã§æ³šæããŠãã ããã
p.touch()ïŒæ¢åã§ããšã©ãŒã«ãªãããã¿ã€ã ã¹ã¿ã³ããæŽæ°ãããïŒp.unlink()ïŒmissing_ok=True ã§ååšããªããŠãOKã«ïŒp.mkdir()p.rmdir()ïŒäžèº«ã空ã§ãªããšãšã©ãŒïŒããã ãèŠããã°ãæ¥åžžã®ãã¹æäœã§å°ãããšã¯ã»ãŒãããŸããðª
åç»ããããèšäºã§PythonãåŠãã§ããæ¹ã¯å€ããšæããŸããããäœç³»çã«æå ã§èŠè¿ããææãããå¿«é©ãªåŠç¿ç°å¢ããæŽãããšãç解床ãšç¶ç¶çãäžæ°ã«å€ãããŸããããã§ã¯ãpathlibã®ãããªæšæºã©ã€ãã©ãªã®äœ¿ãããªãã身ã«ã€ãããæ¹ã«ããããã®ã¢ã€ãã ãå³éžããŸããã
ãã¡ã€ã«æäœã»èªååã®å®çªæžãpathlibãglobã䜿ã£ãå®äŸãè±å¯ã§ãæ¬çš¿ã®å 容ãå®åã¬ãã«ã«åŒãäžããŠãããŸãã
èšèªä»æ§ã ãã§ãªããçŸå Žã§éçšããã³ãŒãã®æžãæ¹ããåŠã¹ãäžåãpathlibã®ãããªã¢ãã³ãªæžãæ¹ã®æçŸ©ãè ¹èœã¡ããŸãã
éããªæéµæãšããã¯ã©ã€ãä»ãã§ãå€ã®ã³ãŒãã£ã³ã°ãå¿«é©ãæã®ç²ãã軜æžããŠãããã®ã§ãåçµåŠç¿ãæããŸãã
暪ã¹ã¯ããŒã«ããžã§ã¹ãã£ãŒæäœã§ãã¿ãŒããã«ãšãšãã£ã¿ã®è¡ãæ¥ãã¹ã ãŒãºã«ããã¡ã€ã«æŽçãèªååããã¹ã¯ãªãããæžããªãã䜿ããšãã®å¿«é©ããåãããŸãã
ã¿ãŒããã«ã»ãšãã£ã¿ã»ãã©ãŠã¶ã䞊ã¹ãŠè¡šç€ºã§ãã4Kã¢ãã¿ãŒã¯ãåŠç¿å¹çãäžæ®µåŒãäžããæè³ãUSB-Cäžæ¬ã§æ¥ç¶ã§ããã¢ãã«ãªãæºãã¹ãããªããŸãã
ããããPythonãåŠã¶æ¹ãªãpathlibåªå
ã§åé¡ãããŸãããå
¬åŒã髿°Žæºã¢ãžã¥ãŒã«ãšããŠæšå¥šããŠãããã³ãŒãããªããžã§ã¯ãæåã§èªã¿ããããªããŸããå€ãã³ãŒãããŒã¹ãèªããšãã« os.path ã®ç¥èããããšå®å¿ããšããã€ã¡ãŒãžã§å€§äžå€«ã§ãã
pathlibã¯Python 3.4ã§å°å
¥ãããŸãããããããå€ãç°å¢ã§ã¯äœ¿ããªããããå©çšåã« python --version ã§ããŒãžã§ã³ã確èªããŸããããçŸè¡ã®3.xç³»ã§ããã°ãŸãåé¡ãããŸããã
æå®ãããã£ã¬ã¯ããªã®äžã ãã§ãªãããã®äžã®ãµããã£ã¬ã¯ããªãããã«ãã®äžâŠãšå
¥ãåã®éå±€ããŸãããšååŸããããšã§ããglob("**/*") ã rglob("*") ã䜿ãã°äžçºã§å®çŸã§ããŸãã
pathlibã䜿ãå Žåãåºæ¬çã«æžãåãã¯äžèŠã§ããå
éšçã«ã¯ WindowsPath ã PosixPath ãèªåã§éžã°ãããããåãã³ãŒãã§ã¯ãã¹ãã©ãããã©ãŒã 察å¿ãã§ããŸãã
æ
£ãããŸã§ã¯1ã¹ããããã€å€æ°ã«ä»£å
¥ããæžãæ¹ã§æ§ããŸãããåäœãçè§£ããŠããã[p.name for p in dir1.iterdir()] ã®ãããª1è¡ã¹ã¿ã€ã«ã«æ®µéçã«çœ®ãæããŠããã®ãããããã§ãã
Pythonã®ãã¹æäœã¯ãæåããã3ã€ãã¢ãžã¥ãŒã«ããã£ãŠé£ãããããšæããŸããããŸã㯠pathlib ãäžå¿ã«æŒãããã°ååã§ãããã¹ãªããžã§ã¯ãã®äœæãiterdir() ã«ããäžèЧååŸãglob() ã§ã®ååž°æ€çŽ¢ããããŠäœæã»åé€ã¡ãœããããã®æµãããæã«ãªããã°ãæ¥ã
ã®ãã¡ã€ã«æŽçãããŒã¿ååŠçãé©ãã»ã©çãã³ãŒãã§æžããããã«ãªããŸãã
åç»ãæ¬ã§åŸãç¥èã¯ãå®éã«æãåãããŠããå®çãããã®ããæ°ã«å ¥ãã®æžç±ãšããŒããŒãããããŠãµãã¢ãã¿ãŒãæããŠãèªåå°çšã®ãåŠç¿ãç¶ãç°å¢ããæŽããŠã¿ãŠãã ãããæ°ã¥ãã°ããªãããã¿ãŒããã«ã§ã¹ããšã¹ã¯ãªãããæžããäžäººåã®PythonãŠãŒã¶ãŒã«ãªã£ãŠããã¯ãã§ãð
â ïž Windowsã»ãã¥ãªã…
ð§ çªç¶ã®æçš¿ã«ãã¡ã³éšç¶ïŒã©…
ð§© ããºã«ãè§£ãå¿«æãã³ãŒãã§…
âš ããã°ã©ã ã®åäœã軜ããã…
ð ãµãŒããŒãµã€ãéçºã®äžçãž…
âš é¢åãªWebäœæ¥ãèªååã…