ãŒãããPythonãåŠãã§ããæ¬é£èŒãä»åã¯ãPythonã䜿ã£ãŠãã¡ã€ã«ãèªã¿æžãããæ¹æ³ã解説ããããããããã¡ã€ã«ã·ã¹ãã ã¯ãOSã®åºæ¬çãªæ©èœã®äžã€ã ãPythonãããã¡ã€ã«ãæ±ãã«ã¯ããã¡ã€ã«ãéããèªã¿æžãããéãããšããæé ã«æ²¿ãå¿ èŠããããä»åã¯ãç¹ã«ãæ¥æ¬èªã®ããã¹ããã¡ã€ã«ãèªã¿æžãããæ¹æ³ãèæ ®ãããã
Pythonã§ãã¡ã€ã«ãèªã¿æžãããæé
çµè«ããèšã£ãŠãPythonã§ãã¡ã€ã«ãèªã¿æžãããã«ã¯ã以äžã®æé ã«æ²¿ã£ãŠåŠçãèšè¿°ããå¿ èŠãããã
- 1. open颿°ã§ãã¡ã€ã«ãéã
- 2. ãã¡ã€ã«ãèªã¿æžããã
- 3. close()ã¡ãœããã§ãã¡ã€ã«ãéãã
ãã®ããã«ããã¡ã€ã«ãéããèªã¿æžããããããã¡ã€ã«ãéãããããããPythonã®ãã¡ã€ã«æäœã®åºæ¬ã ãããã§ã¯ãå®éã®ããã°ã©ã ã§ç¢ºèªããŠã¿ããã
å®éã«ããã¹ããã¡ã€ã«ãèªã¿æžãããããã°ã©ã
ãŸãã¯ãããã¹ããã¡ã€ã«ãäœæããé©åœãªæç« ãæžã蟌ãã§ã¿ãŸããããä»åããJupyterããŒãããã¯ãèµ·åããããã§ãããã°ã©ã ãå®è¡ããªãããåŠãã§ãããã
以äžãããã¡ã€ã«ãkakugen.txtãã«æ Œèšãæžã蟌ãããã°ã©ã ã ã
# ãã¡ã€ã«ã«æ Œèšãæžã蟌ã
fw = open("kakugen.txt", "wt")
fw.write("å
é°ç¢ã®ããšã")
fw.close()
ã³ã¡ã³ããé€ããäžè¡ç®ããèŠãŠããããopen颿°ã¯ã第äžåŒæ°ãããã¡ã€ã«ãã¹ã§ããã第äºåŒæ°ããªãã·ã§ã³ãšãªã£ãŠãããããã¹ããã¡ã€ã«ãæžã蟌ãå Žåã«ã¯ããã®ãªãã·ã§ã³ã«"wt"ãšæå®ããã"w"ã¯ãã¡ã€ã«ã®æžã蟌ã¿ãè¡ãããšãæå®ãã"t"ã¯ããã¹ããã¡ã€ã«ã§ããããšãæå®ããã
ãããŠãopen颿°ã§ãã¡ã€ã«ãéããšãæ»ãå€ãšããŠããã¡ã€ã«æäœã®ããã®ãªããžã§ã¯ããåŸãããããªããžã§ã¯ããšããã®ã¯ã察象ãšãªãããŒã¿ãšãããæäœããæ©èœãæã£ãŠããã¢ããšèãããšè¯ããã€ãŸããããã§ã¯ããã¡ã€ã«ãæäœããããã®ãªããžã§ã¯ããåŸãããã
äºè¡ç®ã¯ããã¡ã€ã«ãžããã¹ããæžã蟌ããæžã蟌ã¿ãè¡ãã«ã¯ãopen颿°ã§åŸããªããžã§ã¯ããæäŸããwriteã¡ãœãããå©çšãããPythonã§ã¯ããªããžã§ã¯ã.ã¡ãœãã()ãã®ããã«æžããŠããªããžã§ã¯ããæã€æ©èœãå©çšã§ãããããã§ããfw.write("ããã¹ã")ãã®ããã«èšè¿°ããããšã§ã察象ãšãªããã¡ã€ã«ã«ããã¹ããæžã蟌ãããšãã§ããããããŠãæåŸãäžè¡ç®ã§ã¯ãcloseã¡ãœãããåŒã³åºããŠããã¡ã€ã«ãéããããã«æç€ºããŠããã
ç¶ããŠãæžã蟌ãã ãã¡ã€ã«ãèªã¿èŸŒãã§ã¿ããã以äžãããã¹ããã¡ã€ã«ãèªã¿èŸŒãããã°ã©ã ã ã
# ãã¡ã€ã«ããæ Œèšãèªã¿èŸŒã
fr = open("kakugen.txt", "rt")
text = fr.read() # ããã¹ããèªã¿åºã --- (*1)
print(text)
fr.close()
ãã®ããã°ã©ã ã¯ãå ã»ã©ã®æžã蟌ã¿ããã°ã©ã ãå®è¡ããåŸã§ãå®è¡ãããããããšããkakugen.txtãã®å 容ãèªã¿åºããå é°ç¢ã®ããšãããšè¡šç€ºãããã¯ãã ããããŸã§ã®äœæ¥ããJupyterããŒãããã¯ã§å®è¡ãããšã次ã®ããã«ãªãã
ããã°ã©ã ãèŠãŠã¿ãããå ã»ã©ã®ããã°ã©ã ãšã»ãšãã©åããªã®ã§ãç°ãªãéšåã ãèŠãŠã¿ãããããã¯ããã¡ã€ã«ããããã¹ããèªã¿åºããŠãã(â»1)ã®éšåã ããã®ããã«readã¡ãœãããåŒã³ã ããšããã¡ã€ã«ã®äžã®å šéšã®ããã¹ããèªã¿åºãããšãã§ããã
ãšã©ãŒãåºãŠãæããªã
ãšããã§ã倧æµã®æ¹ã¯ããããŸã§ã®ããã°ã©ã ãæ£ããåããããšã ãããããããéæªã以äžã®ãããªãšã©ãŒãåºãããšãããã
PermissionError: [Errno 13] Permission denied: 'kakugen.txt'
ããŸãããã°ã©ãã³ã°ã«æ £ããŠããªã人ã®å Žåããšã©ãŒãåºããšãããããšãŠãæãããæãããã®ã ããããããšã©ãŒãžã®å¯ŸåŠã¯ããã°ã©ã ãäœãäžã§æ¬ ãããªããã®ã ã
ããããããšã©ãŒãèµ·ããåå ã¯ã倧ããåããŠäºã€ãäžã€ã¯ãããã°ã©ã ãééã£ãŠããã±ãŒã¹ããããŠãããäžã€ã¯ãããã°ã©ã ã¯åã£ãŠãããã®ã®ãããã°ã©ã ãå®è¡ããæã®ç¶æ ãæªãã£ãããã«èµ·ããã±ãŒã¹ã ã
åè ã®ã±ãŒã¹ïŒããã°ã©ã ãééã£ãŠãããã®ïŒã¯ãããã°ã©ã ãçŽãã°åããããããåŸè ã®ã±ãŒã¹ã§ã¯ãããã°ã©ã ã«ã¯åé¡ããªãã®ã§ãããã°ã©ã 以å€ã®èŠå ã調æ»ããå¿ èŠãããããã®æã®ãšã©ãŒãããªãèµ·ããã®ããšãããšããããã¯ãŒã¯ãåæãããŠãããããã£ã¹ã¯ãäžæ¯ã§æžã蟌ã¿ãã§ããªãç¶æ ã§ãã£ããããšãã£ãå€çãªèŠå ã§ãšã©ãŒãšãªãã
ä»ååºããšã©ãŒã¯ããPermission deniedãã ãPythonã®ãšã©ãŒã¡ãã»ãŒãžã¯åºæ¬çã«è±èªã§è¡šç€ºãããã®ã§é©ãããããããé£ãããã®ã§ã¯ãªããpermissionãšã¯èš±å¯ã§ãdeniedãšã¯åŠå®ãã(deny)ã®éå»åœ¢ã ãã€ãŸããã¢ã¯ã»ã¹æš©éããªããšãããšã©ãŒãšããããšã«ãªãã
èšãæãããªãããã¡ã€ã«ãããã¯ãã£ã¬ã¯ããªããèªã¿åãå°çšãã«èšå®ãããŠãããšããããšã ãWindowsã§ããã°ããã©ã«ãã®ããããã£ã§ãèªã¿åãå°çšå±æ§ãã¯ããããmacOSãLinuxã§ããã°ããchmod u+w (ãã¡ã€ã«ããã©ã«ãã®ãã¹)ãã®ã³ãã³ããå®è¡ããŠæžãèŸŒã¿æš©éãä»äžãããã
æ¥æ¬èªã®ããã¹ããã¡ã€ã«ãèªã¿èŸŒãã
ãšããã§ãäžèšã®æé ã§ãPythonã§æžã蟌ãã æ¥æ¬èªã®ããã¹ãããããã¹ããšãã£ã¿ã§éããŠã¿ããšåããããæåãšã³ã³ãŒãã£ã³ã°(ããããæåã³ãŒã)ã¯ãç°å¢ã«ãã£ãŠç°ãªãã
æšä»ã倧æµã®ããã¹ããšãã£ã¿ã¯ãUTF-8ãèªã¿æžãã§ãããã«ãªã£ãŠããããäœãããã®çç±ã§ãç°ãªãç°å¢ã§èªã¿æžããããå Žåãããããããªæã¯ãopen颿°ãåŒã¶ãšãã«ãencoding="shift_jis"ã®ããã«ãã©ã¡ãŒã¿ã远å ãããã以äžã¯ãShift_JISã§ãã¡ã€ã«ãèªã¿æžãããããã°ã©ã äŸã ã
# ãã¡ã€ã«ã«Shift_JISã§æ Œèšãæžã蟌ã
fw = open("kakugen-sjis.txt", "wt", encoding="shift_jis")
fw.write("å
é°ç¢ã®ããšã")
fw.close()
# ãã¡ã€ã«ããæ Œèšãèªã¿èŸŒã
fr = open("kakugen-sjis.txt", "rt", encoding="shift_jis")
text = fr.read()
print(text)
fr.close()
ããã°ã©ã ãå®è¡ãããã念ã®ãããããã¹ããšãã£ã¿ã§æžãåºããããkakugen-sjis.txtããéããŠãæåã³ãŒãã確èªããŠã¿ãããShift_JISãšèªèãããŠããã¯ãã ãå ã»ã©ã®ããã°ã©ã ãšç°ãªãéšåã¯ãopen颿°ã§ãencoding="shift_jis"ã®ãã©ã¡ãŒã¿ã远å ããŠããã ãã ãUTF-8ã®å Žåã¯ãåæ§ã«encoding="utf-8"ãšããã°ããã
ãŸãšã
以äžãä»åã¯ãPythonã§ããã¹ããã¡ã€ã«ãèªã¿æžãããæ¹æ³ã玹ä»ããããã¡ã€ã«ãéããŠãåŠçãããããéãããšããäžé£ã®æé ã«æ²¿ã£ãŠããã°ã©ã ãäœãå¿ èŠãããããšã玹ä»ãããå®å šã«ãã¡ã€ã«ãæ±ãããã«ããã®æé ãå¿ èŠãªã®ã§ãèŠããŠããããæ¬¡åã¯ãããå°ããå®è·µçã«ãã¡ã€ã«ãæ±ãæ¹æ³ã玹ä»ããã
èªç±åããã°ã©ããŒããããã¯ãã©ã«ãŠãããã°ã©ãã³ã°ã®æ¥œãããäŒããæŽ»åãããŠããã代衚äœã«ãæ¥æ¬èªããã°ã©ãã³ã°èšèªããªã§ããã ãããã¹ã鳿¥œããµã¯ã©ããªã©ã2001幎ãªã³ã©ã€ã³ãœãã倧è³å ¥è³ã2004幎床æªèžãŠãŒã¹ ã¹ãŒããŒã¯ãªãšãŒã¿ã2010幎 OSSè²¢ç®è ç« åè³ãæè¡æžãå€ãå·çããŠããã


