- 1 1. ã¯ããã«
- 2 2. Pythonã§ãã€ããªãã¡ã€ã«ãèªã¿èŸŒãæ¹æ³ãšåºæ¬æäœ
- 2.1 2.1 open() 颿°ã䜿ã£ããã€ããªãã¡ã€ã«ã®èªã¿èŸŒã¿
- 2.2 2.2 with æã䜿ã£ãå®å šãªãã€ããªãã¡ã€ã«ã®èªã¿èŸŒã¿
- 2.3 2.3 èªã¿èŸŒã¿æ¹æ³ã®ããªãšãŒã·ã§ã³
- 2.4 2.4 seek() ã䜿ã£ããã¡ã€ã«äœçœ®ã®æäœ
- 2.5 2.5 tell() ã§çŸåšã®ãã¡ã€ã«äœçœ®ãååŸ
- 2.6 2.6 ãŸãšã
- 3 3. Pythonã䜿ã£ããã€ããªãã¡ã€ã«ã®å¹ççãªèªã¿èŸŒã¿æ¹æ³
- 3.1 3.1 ãã€ããªãã¡ã€ã«ã®å šããŒã¿ãäžæ¬ã§èªã¿èŸŒãïŒread()ïŒ
- 3.2 3.2 æå®ãã€ãæ°ãã€åå²ããŠèªã¿èŸŒãïŒread(n)ïŒ
- 3.3 3.3 1è¡ãã€ãã€ããªããŒã¿ãèªã¿èŸŒãïŒreadline()ïŒ
- 3.4 3.4 ãã¡ã€ã«ã®ç¹å®äœçœ®ããããŒã¿ãèªã¿èŸŒãïŒseek() ãæŽ»çšïŒ
- 3.5 3.5 ãã¡ã€ã«ã®çŸåšäœçœ®ãååŸïŒtell()ïŒ
- 3.6 3.6 ã¡ã¢ãªããããã¡ã€ã«ãå©çšããŠé«éã«èªã¿èŸŒãïŒmmapïŒ
- 3.7 3.7 ãŸãšã
- 4 4. èªã¿èŸŒãã ãã€ããªããŒã¿ã®è§£ææ¹æ³
- 5 5. Pythonã§ãã€ããªãã¡ã€ã«ãäœæã»æžã蟌ã¿ããæ¹æ³
- 5.1 5.1 ãã€ããªã¢ãŒãã§ãã¡ã€ã«ãæžã蟌ã
- 5.2 5.2 struct.pack() ã䜿ã£ãŠãã€ããªããŒã¿ãäœæãã
- 5.3 5.3 æ°å€ããŒã¿ããã€ããªãã¡ã€ã«ã«æžã蟌ã
- 5.4 5.4 æååããŒã¿ããã€ããªãã¡ã€ã«ã«æžã蟌ã
- 5.5 5.5 æµ®åå°æ°ç¹æ°ããã€ããªãã¡ã€ã«ã«æžã蟌ã
- 5.6 5.6 ãã€ããªãã¡ã€ã«ã®è¿œèšïŒ'ab' ã¢ãŒãïŒ
- 5.7 5.7 seek() ã䜿ã£ãŠç¹å®ã®äœçœ®ã«ããŒã¿ãæžã蟌ã
- 5.8 5.8 ãŸãšã
- 6 6. Pythonã§ãã€ããªãã¡ã€ã«ãæ±ãå®è·µäŸ
- 7 7. ãã€ããªãã¡ã€ã«ãæ±ãéã®æ³šæç¹ãšãã¹ããã©ã¯ãã£ã¹
- 7.1 7.1 倧容éãã¡ã€ã«ã®åŠçãæé©åãã
- 7.2 7.2 with æã䜿ã£ãŠãã¡ã€ã«ã確å®ã«éãã
- 7.3 7.3 ãšã³ãã£ã¢ã³ïŒãã€ããªãŒããŒïŒãæ£ããæå®ãã
- 7.4 7.4 äŸå€åŠçãçµã¿èŸŒãã§ãšã©ãŒãé²ã
- 7.5 7.5 ãã€ããªãã¡ã€ã«ãæ±ãéã®ãããã°æ¹æ³
- 7.6 7.6 ãŸãšã
- 8 8. ãããã質åïŒFAQïŒ
- 8.1 Q1: ããã¹ããã¡ã€ã«ãšãã€ããªãã¡ã€ã«ã®éãã¯ïŒ
- 8.2 Q2: Pythonã§ãã€ããªãã¡ã€ã«ãéããšãã'rb' ãš 'r' ã®éãã¯ïŒ
- 8.3 Q3: struct ã¢ãžã¥ãŒã«ã®äœ¿ãæ¹ãåãããŸãããã©ã®ããã«äœ¿çšããŸããïŒ
- 8.4 Q4: ãã€ããªãã¡ã€ã«ãããã¹ãããŒã¿ã«å€æããæ¹æ³ã¯ïŒ
- 8.5 Q5: ãã€ããªãã¡ã€ã«ã®èªã¿æžãã§æ°ãä»ããã¹ããšã³ãã£ã¢ã³ãšã¯äœã§ããïŒ
- 8.6 Q6: Pythonã§å€§ããªãã€ããªãã¡ã€ã«ãå¹ççã«åŠçããæ¹æ³ã¯ïŒ
- 8.7 Q7: ãã€ããªãã¡ã€ã«ããããã°ããæ¹æ³ã¯ïŒ
- 8.8 ãŸãšã
- 8.9 æåŸã«
1. ã¯ããã«
Pythonã¯ãããã¹ããã¡ã€ã«ã ãã§ãªãããã€ããªãã¡ã€ã«ã®èªã¿æžãã«ã察å¿ããŠããŸãããã€ããªãã¡ã€ã«ãæ±ãããšã§ãç»åãé³å£°ãåç»ãå§çž®ãã¡ã€ã«ãªã©ãããŸããŸãªããŒã¿ã®æäœãå¯èœã«ãªããŸããæ¬èšäºã§ã¯ãPythonã䜿ã£ãŠãã€ããªãã¡ã€ã«ãå®å šãã€å¹ççã«èªã¿èŸŒãæ¹æ³ã解説ããŠãããŸãã
1.1 ãã€ããªãã¡ã€ã«ãšã¯ïŒ
ãã€ããªãã¡ã€ã«ãšã¯ã人éãçŽæ¥èªããæååã§ã¯ãªããã³ã³ãã¥ãŒã¿ãçè§£ã§ãããã€ããªããŒã¿ïŒ0ãš1ã®çµã¿åããïŒã§æ§æãããŠãããã¡ã€ã«ã®ããšã§ãã代衚çãªãã€ããªãã¡ã€ã«ã®äŸãšããŠã以äžã®ãããªãã®ããããŸãã
- ç»åãã¡ã€ã«ïŒPNG, JPEG, BMP ãªã©ïŒ
- é³å£°ãã¡ã€ã«ïŒWAV, MP3, AAC ãªã©ïŒ
- åç»ãã¡ã€ã«ïŒMP4, AVI, MOV ãªã©ïŒ
- å§çž®ãã¡ã€ã«ïŒZIP, RAR, GZ ãªã©ïŒ
- ããã°ã©ã å®è¡ãã¡ã€ã«ïŒEXE, DLL, BIN ãªã©ïŒ
ãã€ããªãã¡ã€ã«ã¯ãéåžžã®ããã¹ããšãã£ã¿ã§éããšãæååããããŠèŠããããšãã»ãšãã©ã§ããããã¯ãããŒã¿ãç¹å®ã®ãã©ãŒãããã§ãšã³ã³ãŒããããŠãããé©åãªããã°ã©ã ã§è§£æããªããšæå³ã®ããæ å ±ã«ãªããªãããã§ãã
1.2 ããã¹ããã¡ã€ã«ãšã®éã
ãã€ããªãã¡ã€ã«ãšããã¹ããã¡ã€ã«ã®å€§ããªéãã¯ããã®ããŒã¿ã®ä¿åæ¹æ³ã§ãã
çš®é¡ | ããŒã¿ã®å 容 | äŸ |
---|---|---|
ããã¹ããã¡ã€ã« | æåã³ãŒãã䜿ã£ãŠä¿åïŒUTF-8, Shift-JISãªã©ïŒ | .txt , .csv , .json |
ãã€ããªãã¡ã€ã« | 0ãš1ã®ãã€ãåã§ä¿å | .jpg , .mp3 , .exe |
äž»ãªéã
- ããŒã¿ã®æ§é
- ããã¹ããã¡ã€ã«ã¯ãæåãšããŠè§£éã§ããããŒã¿ã®ã¿ãå«ãã
- ãã€ããªãã¡ã€ã«ã¯ãããããããŒã¿ïŒç»åãé³å£°ãå®è¡å¯èœã³ãŒããªã©ïŒãå«ãã
- ãµã€ãº
- ããã¹ããã¡ã€ã«ã¯ãä¿åããããŒã¿ãå°ãªãå Žåããã¡ã€ã«ãµã€ãºãå°ãããªãã
- ãã€ããªãã¡ã€ã«ã¯ãåãå 容ã§ããšã³ã³ãŒãã®åœ±é¿ã§ãµã€ãºã倧ãããªãããšãããã
- ç·šéæ¹æ³
- ããã¹ããã¡ã€ã«ã¯ã
Notepad
ãVS Code
ãªã©ã®ãšãã£ã¿ã§çŽæ¥éããŠç·šéå¯èœã - ãã€ããªãã¡ã€ã«ã¯ãå°çšã®ããã°ã©ã ïŒäŸïŒãã€ããªãšãã£ã¿ïŒã䜿ããªããšç·šéã§ããªãã
1.3 Pythonã§ãã€ããªãã¡ã€ã«ãæ±ãå¿ èŠæ§
Pythonã䜿ã£ãŠãã€ããªãã¡ã€ã«ãæäœããçç±ãšããŠã以äžã®ãããªç¹ãæããããŸãã
â ç»åãé³å£°ããŒã¿ã®åŠç
ãã€ããªãã¡ã€ã«ãèªã¿èŸŒãã§ãPythonã®ããã°ã©ã ã§ç»åãè§£æããããé³å£°ããŒã¿ãåŠçãããããããšãå¯èœã«ãªããŸãã
# äŸïŒPNGç»åãã¡ã€ã«ããã€ããªãšããŠèªã¿èŸŒã
with open("image.png", "rb") as file:
binary_data = file.read()
print(binary_data[:20]) # æåã®20ãã€ãã衚瀺
â¡ å§çž®ããŒã¿ã®è§£æ
Pythonã«ã¯ zipfile
ã gzip
ãªã©ã®ã¢ãžã¥ãŒã«ããããZIPãã¡ã€ã«ãGZãã¡ã€ã«ãããã°ã©ã ã§è§£åã»å§çž®ã§ããŸãã
import gzip
# äŸïŒGZå§çž®ããããã¡ã€ã«ãéã
with gzip.open("example.gz", "rb") as file:
content = file.read()
print(content)
⢠ãã€ããªãããã³ã«ã®è§£æ
ãããã¯ãŒã¯éä¿¡ãããŒã¿ããŒã¹ã®äœã¬ãã«ãªæäœã§ã¯ããã€ããªããŒã¿ã®è§£æãå¿
èŠã«ãªããŸããstruct
ã¢ãžã¥ãŒã«ã䜿ãããšã§ããã€ããªããŒã¿ãæ°å€ãæååã«å€æããããšãã§ããŸãã
import struct
# äŸïŒãã€ããªããŒã¿ãæŽæ°ã«å€æ
binary_data = b' ' # 4ãã€ãã®ããŒã¿
integer_value = struct.unpack('<I', binary_data)[0]
print(integer_value) # åºå: 1
1.4 ãŸãšã
- ãã€ããªãã¡ã€ã«ã¯ãç»åã»é³å£°ã»å§çž®ããŒã¿ãªã©ã®æ å ±ãä¿åããããã®ãã¡ã€ã«åœ¢åŒã
- ããã¹ããã¡ã€ã«ãšã¯ç°ãªãã0ãš1ã®ãã€ãåã§ããŒã¿ãä¿åãããã
- Pythonã䜿ãããšã§ããã€ããªããŒã¿ãè§£æããåŠçã倿ãè¡ãããšãã§ããã
- Pythonã®
open()
颿°ãstruct
ã¢ãžã¥ãŒã«ã䜿ãããšã§ããã€ããªãã¡ã€ã«ãå¹ççã«æ±ãããšãå¯èœã
2. Pythonã§ãã€ããªãã¡ã€ã«ãèªã¿èŸŒãæ¹æ³ãšåºæ¬æäœ
Pythonã§ã¯ãopen()
颿°ã䜿çšããŠãã€ããªãã¡ã€ã«ãéããèªã¿èŸŒãããšãã§ããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãPythonã«ããããã€ããªãã¡ã€ã«ã®åºæ¬çãªæäœæ¹æ³ã«ã€ããŠè§£èª¬ããŸãã
2.1 open()
颿°ã䜿ã£ããã€ããªãã¡ã€ã«ã®èªã¿èŸŒã¿
Pythonã® open()
颿°ã¯ããã¡ã€ã«ãéãããã®åºæ¬çãªé¢æ°ã§ãããã€ããªãã¡ã€ã«ãéãå Žåã¯ã'rb'
ïŒèªã¿èŸŒã¿å°çšã®ãã€ããªã¢ãŒãïŒãæå®ããŸãã
åºæ¬æ§æ
file = open("example.bin", "rb") # 'rb' ã¯ããã€ããªã¢ãŒãã§èªã¿èŸŒã¿ããæå³ãã
binary_data = file.read() # ãã¡ã€ã«ã®å
容ãèªã¿èŸŒã
file.close() # ãã¡ã€ã«ãéãã
ãããããã®æ¹æ³ã§ã¯ close()
ãæç€ºçã«åŒã°ãªããšãã¡ã€ã«ãéããããããªãœãŒã¹ãªãŒã¯ã®åå ã«ãªãããšããããŸãããã®ãããPythonã§ã¯ with
æã䜿çšããŠããã¡ã€ã«ãå®å
šã«éãã®ãäžè¬çã§ãã
2.2 with
æã䜿ã£ãå®å
šãªãã€ããªãã¡ã€ã«ã®èªã¿èŸŒã¿
with
æã䜿ããšããã¡ã€ã«ãèªåçã«éããããšãã§ããããããšã©ãŒãçºçããŠãé©åã«ãªãœãŒã¹ãè§£æŸã§ããŸãã
äŸïŒãã€ããªããŒã¿ã®å®å šãªèªã¿èŸŒã¿
with open("example.bin", "rb") as file:
binary_data = file.read()
# withãããã¯ãæãããšãèªåçã«fileãéãããã
with
æã䜿ãã¡ãªãã
file.close()
ãåŒã¶å¿ èŠããªãïŒèªåçã«éããããïŒ- ãšã©ãŒãçºçããŠããªãœãŒã¹ãªãŒã¯ããªã
- ã³ãŒããã·ã³ãã«ã§å¯èªæ§ãåäžãã
2.3 èªã¿èŸŒã¿æ¹æ³ã®ããªãšãŒã·ã§ã³
Pythonã«ã¯ããã€ããªãã¡ã€ã«ãèªã¿èŸŒãããã®ããã€ãã®æ¹æ³ãçšæãããŠããŸããçšéã«å¿ããŠé©åãªã¡ãœãããéžæããŸãããã
â å
šããŒã¿ãäžæ¬ã§èªã¿èŸŒãïŒread()
ïŒ
ãã€ããªãã¡ã€ã«ã®å 容ã ãã¹ãŠã¡ã¢ãªã«ããŒã ããæ¹æ³ã§ãã
with open("example.bin", "rb") as file:
binary_data = file.read() # å
šããŒã¿ãäžæ¬ã§èªã¿èŸŒã
ã¡ãªãã
- ã·ã³ãã«ã§åããããã
- å°ãããã¡ã€ã«ãªãå¹çç
ãã¡ãªãã
- 倧ããªãã¡ã€ã«ïŒæ°çŸMBïœGBåäœïŒã®å Žåãã¡ã¢ãªãå§è¿«ããå¯èœæ§ããã
â¡ æå®ãããã€ãæ°ãã€èªã¿èŸŒãïŒread(n)
ïŒ
ãã¡ã€ã«ã éšåçã«åå²ããŠèªã¿èŸŒã ããšã§ã倧容éãã¡ã€ã«ã®åŠçã«é©ããŠããŸãã
with open("example.bin", "rb") as file:
chunk = file.read(1024) # 1024ãã€ãïŒ1KBïŒãã€èªã¿èŸŒã
while chunk:
print(chunk) # èªã¿èŸŒãã ããŒã¿ãåŠç
chunk = file.read(1024) # 次ã®1024ãã€ããèªã¿èŸŒã
ã¡ãªãã
- ã¡ã¢ãªæ¶è²»ãæãããã
- 倧ããªãã¡ã€ã«ã§ãå¹ççã«åŠçã§ãã
ãã¡ãªãã
- ãã¡ã€ã«å šäœãäžæ¬ã§åŠçããçšéã«ã¯åããªã
⢠1è¡ãã€ãã€ããªããŒã¿ãèªã¿èŸŒãïŒreadline()
ïŒ
ãã€ããªããŒã¿ã®äžã«æ¹è¡ïŒïŒãå«ãŸããŠããå Žåã1è¡ãã€èªã¿èŸŒãããšãå¯èœã§ãã
with open("example.bin", "rb") as file:
line = file.readline() # 1è¡ãã€èªã¿èŸŒã
while line:
print(line)
line = file.readline() # 次ã®è¡ãèªã¿èŸŒã
çšé
- ãã€ããªãã°ãã¡ã€ã« ãªã©ãæ¹è¡ãå«ããã€ããªããŒã¿ã®åŠç
泚æç¹
- æ¹è¡ããªãå Žåããã¹ãŠã1è¡ãšã¿ãªããã ãããé©åãªãã¡ã€ã«ã§ã®ã¿æå¹
2.4 seek()
ã䜿ã£ããã¡ã€ã«äœçœ®ã®æäœ
seek()
ã䜿ããšããã¡ã€ã«ã®ä»»æã®äœçœ®ããããŒã¿ãèªã¿èŸŒãããšãã§ããŸãã
seek()
ã®åºæ¬æ§æ
file.seek(offset, whence)
åŒæ° | 説æ |
---|---|
offset | ç§»åãããã€ãæ° |
whence | åºæºç¹ïŒ0 : ãã¡ã€ã«ã®å
é , 1 : çŸåšäœçœ®, 2 : ãã¡ã€ã«ã®æ«å°ŸïŒ |
äŸïŒãã¡ã€ã«ã®éäžããããŒã¿ãèªã¿èŸŒã
with open("example.bin", "rb") as file:
file.seek(10) # ãã¡ã€ã«ã®å
é ãã10ãã€ãç®ã«ç§»å
data = file.read(5) # 5ãã€ãåèªã¿èŸŒã
print(data)
çšé
- ãã¡ã€ã«ã®ããããŒæ å ±ãååŸ
- ããŒã¿ã®ç¹å®éšåãè§£æ
2.5 tell()
ã§çŸåšã®ãã¡ã€ã«äœçœ®ãååŸ
tell()
ã¡ãœããã䜿ããšãçŸåšã®ãã¡ã€ã«äœçœ®ïŒãã€ããªãã»ããïŒãååŸã§ããŸãã
äŸïŒãã¡ã€ã«ã®äœçœ®ã確èª
with open("example.bin", "rb") as file:
file.read(10) # 10ãã€ãèªã¿èŸŒã
position = file.tell() # çŸåšã®ãã¡ã€ã«äœçœ®ãååŸ
print(f"çŸåšã®ãã¡ã€ã«äœçœ®: {position} ãã€ã")
çšé
- ã©ããŸã§ãã¡ã€ã«ãèªã¿èŸŒãã ã確èª
- ãã¡ã€ã«ã®éäžã§åŠçãè¡ãå Žåã®ãããã°
2.6 ãŸãšã
- Pythonã§ãã€ããªãã¡ã€ã«ãéããšãã¯
'rb'
ã¢ãŒãã䜿çšãã with
æã䜿ãããšã§å®å šã«ãã¡ã€ã«ãéããããšãã§ãã- å
šããŒã¿ãäžæ¬ã§èªã¿èŸŒã (
read()
) ãšã¡ã¢ãªã倧éã«æ¶è²»ããããã倧容éãã¡ã€ã«ã«ã¯read(n)
ã䜿ã seek()
ã§ãã¡ã€ã«ã®ä»»æã®äœçœ®ã«ç§»åããtell()
ã§çŸåšã®ãã¡ã€ã«äœçœ®ãååŸã§ãã
3. Pythonã䜿ã£ããã€ããªãã¡ã€ã«ã®å¹ççãªèªã¿èŸŒã¿æ¹æ³
åã®ã»ã¯ã·ã§ã³ã§ã¯ããã€ããªãã¡ã€ã«ãéãåºæ¬çãªæ¹æ³ã«ã€ããŠè§£èª¬ããŸããããã®ã»ã¯ã·ã§ã³ã§ã¯ãå¹ççã«ãã€ããªãã¡ã€ã«ãèªã¿èŸŒãæ¹æ³ ã«ã€ããŠè©³ãã説æããŸããPythonã§ã¯ãããŸããŸãªæ¹æ³ã§ãã€ããªããŒã¿ãèªã¿èŸŒãããšãã§ããçšéã«ãã£ãŠé©åãªææ³ãéžã¶ããšãéèŠã§ãã
3.1 ãã€ããªãã¡ã€ã«ã®å
šããŒã¿ãäžæ¬ã§èªã¿èŸŒãïŒread()
ïŒ
ãã€ããªãã¡ã€ã«ãäžæ¬ã§èªã¿èŸŒãã«ã¯ãread()
ã¡ãœããã䜿çšããŸãã
åºæ¬æ§æ
with open("example.bin", "rb") as file:
binary_data = file.read()
ã¡ãªãã
- ã·ã³ãã«ã§çŽæç
- å°ãããã¡ã€ã«ïŒæ°MB以äžïŒãªãé©ããŠãã
ãã¡ãªãã
- ãã¡ã€ã«ã倧ããå ŽåïŒæ°çŸMB以äžïŒã¡ã¢ãªã倧éã«æ¶è²»ãã
- ã¡ã¢ãªã«åãŸããããªãå Žåãããã°ã©ã ãã¯ã©ãã·ã¥ããå¯èœæ§ããã
å®äŸ
with open("sample.bin", "rb") as file:
binary_data = file.read()
print(len(binary_data)) # ãã¡ã€ã«ã®ãµã€ãºïŒãã€ãæ°ïŒã衚瀺
ãã®æ¹æ³ã¯ãæ°MBçšåºŠã®ãã¡ã€ã« ã§ããã°åé¡ãªãåŠçã§ããŸãã
3.2 æå®ãã€ãæ°ãã€åå²ããŠèªã¿èŸŒãïŒread(n)
ïŒ
倧容éã®ãã€ããªãã¡ã€ã«ãæ±ãå Žåãã¡ã¢ãªå¹çãèæ ®ããŠäžå®ã®ãã€ãæ°ãã€åå²ããŠèªã¿èŸŒã æ¹æ³ãæšå¥šãããŸãã
åºæ¬æ§æ
with open("example.bin", "rb") as file:
chunk = file.read(1024) # 1024ãã€ãïŒ1KBïŒãã€èªã¿èŸŒã
while chunk:
print(chunk)
chunk = file.read(1024) # 次ã®1024ãã€ããèªã¿èŸŒã
ã¡ãªãã
- 倧容éãã¡ã€ã«ãæ±ãéã®ã¡ã¢ãªè² è·ã軜æž
- ã¹ããªãŒã åŠçãå¯èœ
ãã¡ãªãã
- ãªã¢ã«ã¿ã€ã ã§ããŒã¿ãåŠçããå Žåã¯è¿œå ã®åŠçãå¿ èŠ
å®äŸ
with open("large_file.bin", "rb") as file:
while True:
chunk = file.read(4096) # 4KBãã€èªã¿èŸŒã
if not chunk:
break # ããŒã¿ããªããªã£ããçµäº
print(f"Read {len(chunk)} bytes")
ãã®æ¹æ³ã䜿ããšãGBåäœã®ãã¡ã€ã«ã§ãã¡ã¢ãªãå§è¿«ããã«åŠç ã§ããŸãã
3.3 1è¡ãã€ãã€ããªããŒã¿ãèªã¿èŸŒãïŒreadline()
ïŒ
ãã€ããªããŒã¿ã®äžã«æ¹è¡ïŒïŒãå«ãŸããŠããå Žåã1è¡ãã€èªã¿èŸŒãããšãå¯èœã§ãã
åºæ¬æ§æ
with open("example.bin", "rb") as file:
line = file.readline()
while line:
print(line)
line = file.readline()
çšé
- ãã€ããªãã°ãã¡ã€ã« ãªã©ãæ¹è¡ãå«ããã€ããªããŒã¿ã®åŠçã«é©ããŠãã
泚æç¹
- ãã€ããªãã¡ã€ã«ã«æ¹è¡ããªãå Žåããã¹ãŠã1è¡ãšã¿ãªããã
- éåžžã®ãã€ããªããŒã¿åŠçã§ã¯ããŸã䜿ãããªã
3.4 ãã¡ã€ã«ã®ç¹å®äœçœ®ããããŒã¿ãèªã¿èŸŒãïŒseek()
ãæŽ»çšïŒ
ãã€ããªãã¡ã€ã«ãè§£æããéããã¡ã€ã«ã®ç¹å®ã®äœçœ®ããããŒã¿ãèªã¿èŸŒã¿ããå Žå ããããŸãããã®ãããªå Žåã«ã¯ãseek()
ã¡ãœãããæŽ»çšããŸãã
åºæ¬æ§æ
file.seek(offset, whence)
åŒæ° | 説æ |
---|---|
offset | ç§»åãããã€ãæ° |
whence | åºæºç¹ïŒ0 : ãã¡ã€ã«ã®å
é , 1 : çŸåšäœçœ®, 2 : ãã¡ã€ã«ã®æ«å°ŸïŒ |
å®äŸïŒç¹å®ã®äœçœ®ããããŒã¿ãèªã¿èŸŒã
with open("example.bin", "rb") as file:
file.seek(10) # å
é ãã10ãã€ãç®ã«ç§»å
data = file.read(5) # 5ãã€ãåèªã¿èŸŒã
print(data)
ãã®æ¹æ³ã䜿ããšããã¡ã€ã«ããããŒã®è§£æ ã ç¹å®ã®ããŒã¿æ§é ãæã€ãã¡ã€ã«ã®åŠç ã«åœ¹ç«ã¡ãŸãã
3.5 ãã¡ã€ã«ã®çŸåšäœçœ®ãååŸïŒtell()
ïŒ
tell()
ã¡ãœããã䜿ããšãçŸåšã®ãã¡ã€ã«äœçœ®ïŒãã€ããªãã»ããïŒãååŸã§ããŸãã
å®äŸ
with open("example.bin", "rb") as file:
file.read(20) # 20ãã€ãèªã¿èŸŒã
position = file.tell() # çŸåšã®ãã¡ã€ã«äœçœ®ãååŸ
print(f"çŸåšã®äœçœ®: {position} ãã€ã")
çšé
- ã©ããŸã§ãã¡ã€ã«ãèªã¿èŸŒãã ã確èª
- ãã¡ã€ã«ã®éäžã§åŠçãè¡ãå Žåã®ãããã°
3.6 ã¡ã¢ãªããããã¡ã€ã«ãå©çšããŠé«éã«èªã¿èŸŒãïŒmmap
ïŒ
mmap
ã¢ãžã¥ãŒã«ã䜿ããšã倧容éã®ãã€ããªãã¡ã€ã«ãä»®æ³ã¡ã¢ãªã«ãããã³ã° ããé«éã«ã¢ã¯ã»ã¹ã§ããŸãã
åºæ¬æ§æ
import mmap
with open("example.bin", "rb") as file:
with mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ) as mmapped_file:
print(mmapped_file[:100]) # å
é 100ãã€ããååŸ
ã¡ãªãã
- ãã¡ã€ã«å šäœãã¡ã¢ãªäžã§æ±ãããããé«éãªã¢ã¯ã»ã¹ãå¯èœ
- ç¹å®ã®ç¯å²ãçŽæ¥ã¢ã¯ã»ã¹ã§ãã
ãã¡ãªãã
- Pythonã®æšæºçãªãã¡ã€ã«åŠçããããé£æåºŠãé«ã
- 倧ãããããã¡ã€ã«ãããããããšã¡ã¢ãªäžè¶³ã«ãªãå¯èœæ§ããã
3.7 ãŸãšã
- ãã€ããªãã¡ã€ã«ã®å¹ççãªèªã¿èŸŒã¿ã«ã¯ããã¡ã€ã«ãµã€ãºãçšéã«å¿ããææ³ãéžã¶ããšãéèŠ
- å°ããªãã¡ã€ã«ã¯
read()
ã§äžæ¬èªã¿èŸŒã¿ - 倧ããªãã¡ã€ã«ã¯
read(n)
ã§åå²ããŠåŠç - ãã¡ã€ã«ã®ç¹å®äœçœ®ããããŒã¿ãååŸããã«ã¯
seek()
ãæŽ»çš mmap
ã䜿ããšé«éãªããŒã¿ã¢ã¯ã»ã¹ãå¯èœã ããçšéã«å¿ããŠæ³šæãå¿ èŠ

4. èªã¿èŸŒãã ãã€ããªããŒã¿ã®è§£ææ¹æ³
Pythonã§ãã€ããªãã¡ã€ã«ãèªã¿èŸŒãã åŸããã®ããŒã¿ãé©åã«è§£æããããšãéèŠã§ãããã€ããªããŒã¿ã¯éåžžãæŽæ°ãæååãæµ®åå°æ°ç¹æ°ãªã©ã®ãã©ãŒãããã§æ ŒçŽãããŠãããããããŒã¿ã®æ§é ãçè§£ããé©åãªæ¹æ³ã§è§£æããå¿ èŠããããŸãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãPythonã®struct
ã¢ãžã¥ãŒã«ã掻çšãããã€ããªããŒã¿ã®è§£ææ¹æ³ã解説ããŸãã
4.1 struct
ã¢ãžã¥ãŒã«ãšã¯ïŒ
Pythonã®struct
ã¢ãžã¥ãŒã«ã¯ããã€ããªããŒã¿ãæå®ã®ãã©ãŒãããã§ãšã³ã³ãŒãã»ãã³ãŒãããããã®æšæºã©ã€ãã©ãªã§ãã
äž»ãªæ©èœ
- ãã€ããªããŒã¿ãæŽæ°ã»æµ®åå°æ°ç¹æ°ã»æååã«å€æïŒã¢ã³ããã¯ïŒ
- ããŒã¿ããã€ããªåœ¢åŒã«å€æïŒããã¯ïŒ
- ãšã³ãã£ã¢ã³ïŒãã€ããªãŒããŒïŒã®æå®ãå¯èœ
struct
ã¢ãžã¥ãŒã«ã®åºæ¬æ§æ
import struct
# ãã€ããªããŒã¿ãç¹å®ã®åã«å€æïŒã¢ã³ããã¯ïŒ
data = struct.unpack(format, binary_data)
# å€ããã€ããªããŒã¿ã«å€æïŒããã¯ïŒ
binary_data = struct.pack(format, value1, value2, ...)
4.2 ãã€ããªããŒã¿ã®ã¢ã³ããã¯ïŒãã³ãŒãïŒ
ãã€ããªãã¡ã€ã«ããèªã¿èŸŒãã ããŒã¿ããPythonã®æ°å€ãæååãšããŠè§£éããã«ã¯ãstruct.unpack()
ã䜿çšããŸãã
äŸïŒ4ãã€ãã®æŽæ°ïŒ32bitïŒããã³ãŒã
import struct
# ãã€ããªããŒã¿ïŒ4ãã€ãïŒ
binary_data = b' ' # 1ïŒãªãã«ãšã³ãã£ã¢ã³ïŒ
# ã¢ã³ããã¯ïŒãªãã«ãšã³ãã£ã¢ã³ã®ç¬Šå·ãªãæŽæ°ïŒ
value = struct.unpack('<I', binary_data)[0]
print(value) # åºå: 1
åœ¢åŒæå®å | å | ãã€ãæ° |
---|---|---|
b | 笊å·ä»ã8bitæŽæ°ïŒcharïŒ | 1 |
B | 笊å·ãªã8bitæŽæ°ïŒucharïŒ | 1 |
h | 笊å·ä»ã16bitæŽæ°ïŒshortïŒ | 2 |
H | 笊å·ãªã16bitæŽæ°ïŒushortïŒ | 2 |
i | 笊å·ä»ã32bitæŽæ°ïŒintïŒ | 4 |
I | 笊å·ãªã32bitæŽæ°ïŒuintïŒ | 4 |
f | æµ®åå°æ°ç¹æ°ïŒfloatïŒ | 4 |
d | æµ®åå°æ°ç¹æ°ïŒdoubleïŒ | 8 |
4.3 æååããŒã¿ã®è§£æ
ãã€ããªããŒã¿ã®äžã«æååãå«ãŸããŠããå Žåãstruct.unpack()
ã䜿ã£ãŠãã³ãŒãããé©åãªæåãšã³ã³ãŒãã£ã³ã°ãé©çšããå¿
èŠããããŸãã
äŸïŒ10ãã€ãã®æååããã³ãŒã
import struct
# 10ãã€ãã®ãã€ããªããŒã¿
binary_data = b'HelloWorld'
# æååããŒã¿ãšããŠè§£é
decoded_string = struct.unpack('10s', binary_data)[0].decode('utf-8')
print(decoded_string) # åºå: HelloWorld
泚æç¹
10s
ã®ããã«ãã€ãæ°ãæå®ããããšã§ãåºå®é·ã®æååããŒã¿ãååŸå¯èœã.decode('utf-8')
ã䜿çšããŠé©åãªæåãšã³ã³ãŒãã£ã³ã°ã«å€æããã
4.4 æµ®åå°æ°ç¹æ°ã®è§£æ
ãã€ããªããŒã¿ã®äžã«ã¯ãæ°å€ããŒã¿ãIEEE 754ãã©ãŒãããã§æ ŒçŽãããŠããå Žå ããããŸããstruct
ã䜿ããšããã€ããªããæµ®åå°æ°ç¹æ°ãååŸã§ããŸãã
äŸïŒ4ãã€ãã®æµ®åå°æ°ç¹æ°ããã³ãŒã
import struct
# 4ãã€ãã®æµ®åå°æ°ç¹æ°ïŒIEEE 754ãã©ãŒãããïŒ
binary_data = b' Â?' # 1.0 ã衚ã
# ã¢ã³ããã¯
value = struct.unpack('<f', binary_data)[0]
print(value) # åºå: 1.0
4.5 ãšã³ãã£ã¢ã³ïŒãã€ããªãŒããŒïŒã®æå®
ãã€ããªããŒã¿ã®ãã€ããªãŒããŒïŒãšã³ãã£ã¢ã³ïŒã¯ããªãã«ãšã³ãã£ã¢ã³ïŒå°ãããã€ãé ïŒ ãš ããã°ãšã³ãã£ã¢ã³ïŒå€§ãããã€ãé ïŒ ã®2çš®é¡ããããããŒã¿ãæ£ããè§£æããããã«ã¯æå®ãå¿ èŠã§ãã
äŸïŒãªãã«ãšã³ãã£ã¢ã³ãšããã°ãšã³ãã£ã¢ã³ã®éã
import struct
binary_data = b' ' # 1ïŒãªãã«ãšã³ãã£ã¢ã³ïŒ
# ãªãã«ãšã³ãã£ã¢ã³ïŒå°ãããã€ãé ïŒ
little_endian = struct.unpack('<I', binary_data)[0]
print(f"ãªãã«ãšã³ãã£ã¢ã³: {little_endian}") # åºå: 1
# ããã°ãšã³ãã£ã¢ã³ïŒå€§ãããã€ãé ïŒ
big_endian = struct.unpack('>I', binary_data)[0]
print(f"ããã°ãšã³ãã£ã¢ã³: {big_endian}") # åºå: 16777216
4.6 ãŸãšã
- Pythonã®
struct
ã¢ãžã¥ãŒã«ã䜿ããšããã€ããªããŒã¿ãæ°å€ãæååãšããŠè§£æã§ãã - ãšã³ãã£ã¢ã³ã®éããçè§£ããé©åã«ããŒã¿ããã³ãŒãããããšãéèŠ
- è€æ°ã®ããŒã¿åãäžæ¬ã§è§£æããããšã§ããã¡ã€ã«ããããŒãããŒã¿æ§é ãå¹ççã«èªã¿èŸŒãã
5. Pythonã§ãã€ããªãã¡ã€ã«ãäœæã»æžã蟌ã¿ããæ¹æ³
åã®ã»ã¯ã·ã§ã³ã§ã¯ãPythonã§ãã€ããªããŒã¿ãè§£æããæ¹æ³ã«ã€ããŠè§£èª¬ããŸãããæ¬ã»ã¯ã·ã§ã³ã§ã¯ãPythonã䜿ã£ãŠãã€ããªããŒã¿ãæ°èŠäœæãããã€ããªãã¡ã€ã«ã«æžãèŸŒãæ¹æ³ã解説ããŸãã
5.1 ãã€ããªã¢ãŒãã§ãã¡ã€ã«ãæžã蟌ã
Pythonã§ãã€ããªãã¡ã€ã«ãäœæããã«ã¯ãopen()
颿°ã® 'wb'
ïŒæžã蟌ã¿å°çšã®ãã€ããªã¢ãŒãïŒ ã䜿çšããŸãã
åºæ¬æ§æ
with open("example.bin", "wb") as file:
file.write(binary_data)
'wb'
㯠ããã€ããªã¢ãŒãã§æžã蟌ã¿ã ãæå³ãããwrite()
ã¡ãœããã䜿çšã㊠ãã€ããªããŒã¿ããã¡ã€ã«ã«æžã蟌ãã
ç°¡åãªäŸïŒãã€ããªããŒã¿ãæžã蟌ã
with open("output.bin", "wb") as file:
file.write(b'') # 4ãã€ãã®ããŒã¿ãæžã蟌ã
ãã€ã³ã
b''
㯠4ãã€ãã®ãã€ããªããŒã¿ïŒ16鲿°è¡šèšïŒã- å®éã®ãã¡ã€ã«ãµã€ãºã¯ 4ãã€ã ã«ãªãã
5.2 struct.pack()
ã䜿ã£ãŠãã€ããªããŒã¿ãäœæãã
åã®ã»ã¯ã·ã§ã³ã§è§£èª¬ãã struct.unpack()
ãšã¯éã«ãPythonã§ã¯ struct.pack()
ã䜿ã£ãŠããŒã¿ããã€ããªåœ¢åŒã«å€æããŠããæžã蟌㿠ãŸãã
åºæ¬æ§æ
import struct
binary_data = struct.pack(format, value1, value2, ...)
format
ã¯ããã€ããªããŒã¿ã®åïŒæŽæ°ãæµ®åå°æ°ç¹ãæååãªã©ïŒ ãæå®ãããvalue1, value2, ...
ã¯ãããã¯ããããŒã¿ã
5.3 æ°å€ããŒã¿ããã€ããªãã¡ã€ã«ã«æžã蟌ã
æŽæ°ãæµ®åå°æ°ç¹æ°ããã€ããªãã¡ã€ã«ã«ä¿åããã«ã¯ãstruct.pack()
ã䜿ã£ãŠãã€ããªããŒã¿ã«å€æããŠããæžã蟌㿠ãŸãã
äŸïŒæŽæ°ããã€ããªã«å€æããŠæžã蟌ã
import struct
# 笊å·ãªã16bitæŽæ°ïŒHïŒãšç¬Šå·ãªã32bitæŽæ°ïŒIïŒããã€ããªã«å€æ
binary_data = struct.pack('<HI', 512, 123456789)
# ãã¡ã€ã«ã«æžã蟌ã
with open("numbers.bin", "wb") as file:
file.write(binary_data)
解説
<HI
â ãªãã«ãšã³ãã£ã¢ã³ã®ç¬Šå·ãªã16bitæŽæ°ïŒ2ãã€ãïŒ + 笊å·ãªã32bitæŽæ°ïŒ4ãã€ãïŒ512
âïŒ16鲿°ã§ 0x0200ïŒ
123456789
âÃ[
ïŒ16鲿°ã§ 0x075BCD15ïŒ
5.4 æååããŒã¿ããã€ããªãã¡ã€ã«ã«æžã蟌ã
ãã€ããªãã¡ã€ã«ã«ã¯ãåºå®é·ã®æååããŒã¿ ãä¿åã§ããŸãã
äŸïŒ10ãã€ãã®æååãæžã蟌ã
import struct
text = "Hello"
binary_data = struct.pack('10s', text.encode('utf-8')) # 10ãã€ãã®åºå®é·
with open("text.bin", "wb") as file:
file.write(binary_data)
ãã€ã³ã
'10s'
㯠ã10ãã€ãã®åºå®é·æååã ãæå³ãããencode('utf-8')
ã䜿ã£ãŠãã€ããªããŒã¿ã«å€æã- æååãçãå Žåã¯ãæ«å°Ÿã« ïŒãã«æåïŒãèªåçã«è¿œå ãããïŒããã£ã³ã°ïŒã
5.5 æµ®åå°æ°ç¹æ°ããã€ããªãã¡ã€ã«ã«æžã蟌ã
æµ®åå°æ°ç¹æ°ã struct.pack()
ã䜿ã£ãŠä¿åã§ããŸãã
äŸïŒæµ®åå°æ°ç¹æ°ãæžã蟌ã
import struct
float_value = 3.14
binary_data = struct.pack('<f', float_value) # 4ãã€ãã®æµ®åå°æ°ç¹æ°
with open("float.bin", "wb") as file:
file.write(binary_data)
解説
<f
㯠ãªãã«ãšã³ãã£ã¢ã³ã®æµ®åå°æ°ç¹æ°ïŒ4ãã€ãïŒ ãæå³ããã3.14
ã®IEEE 754ãã©ãŒãããã¯0xC3F54840
ãšãªãã
5.6 ãã€ããªãã¡ã€ã«ã®è¿œèšïŒ'ab'
ã¢ãŒãïŒ
ãã€ããªãã¡ã€ã«ã«ããŒã¿ã 远å ããã«ã¯ã'wb'
ã§ã¯ãªã 'ab'
ïŒè¿œèšã¢ãŒãïŒã䜿çšããŸãã
äŸïŒãã€ããªãã¡ã€ã«ã«ããŒã¿ã远èš
with open("output.bin", "ab") as file:
file.write(b'ÿÿ') # 远å ããŒã¿ãæžã蟌ã
ãã€ã³ã
'ab'
㯠ããã€ããªã¢ãŒãã§è¿œèšã ãæå³ããã- æ¢åã®ãã¡ã€ã«ãäžæžããããæ«å°Ÿã«ããŒã¿ã远å ã§ããã
5.7 seek()
ã䜿ã£ãŠç¹å®ã®äœçœ®ã«ããŒã¿ãæžã蟌ã
ãã¡ã€ã«ã®ç¹å®ã®äœçœ®ã«ããŒã¿ãæžã蟌ã ããšãå¯èœã§ãã
äŸïŒãã¡ã€ã«ã®å é ãã10ãã€ãç®ã«ããŒã¿ãæžã蟌ã
with open("output.bin", "r+b") as file:
file.seek(10) # 10ãã€ãç®ã«ç§»å
file.write(b'ª»') # 2ãã€ãã®ããŒã¿ãæžã蟌ã
ãã€ã³ã
'r+b'
ã¢ãŒã㯠ããã€ããªèªã¿æžãã¢ãŒãããseek(10)
ã§ ãã¡ã€ã«ã®10ãã€ãç®ã«ç§»å ããŠæžã蟌ãã
5.8 ãŸãšã
- Pythonã§ã¯
'wb'
ã¢ãŒãã䜿çšããŠãã€ããªãã¡ã€ã«ãæžã蟌ã struct.pack()
ã䜿ãããšã§ãæ°å€ã»æååã»æµ®åå°æ°ç¹æ°ããã€ããªã«å€æã§ãã'ab'
ïŒè¿œèšã¢ãŒãïŒã䜿ããšãæ¢åã®ãã€ããªãã¡ã€ã«ã«ããŒã¿ã远å ã§ããseek()
ãæŽ»çšãããšããã¡ã€ã«ã®ç¹å®äœçœ®ã«ããŒã¿ãæžã蟌ãã
6. Pythonã§ãã€ããªãã¡ã€ã«ãæ±ãå®è·µäŸ
ãããŸã§ãPythonã§ãã€ããªãã¡ã€ã«ãèªã¿æžãããåºæ¬çãªæ¹æ³ãåŠãã§ããŸãããæ¬ã»ã¯ã·ã§ã³ã§ã¯ãå®éã®ãã€ããªãã¡ã€ã«ïŒç»åãã¡ã€ã«ãé³å£°ãã¡ã€ã«ãç¬èªãã€ããªãã©ãŒãããïŒã®è§£æãåŠç ã®å ·äœäŸã玹ä»ããŸãã
6.1 PNGç»åã®ãã€ããªè§£æ
PNGãã¡ã€ã«ãšã¯ïŒ
PNGïŒPortable Network GraphicsïŒã¯ãå§çž®åœ¢åŒã®ç»åãã©ãŒãããã§ãããããããŒæ å ±ãç»åããŒã¿ããã€ããªããŒã¿ãšããŠæ ŒçŽ ãããŠããŸãã
PNGãã¡ã€ã«ã®ããããŒæ§é
PNGã®æåã®8ãã€ãã¯ããã¡ã€ã«ãPNGã§ããããšã瀺ã ããžãã¯ãã³ããŒïŒ89 50 4E 47 0D 0A 1A 0A
ïŒã«ãªã£ãŠããŸãã
PNGã®ãã€ããªããŒã¿ãè§£æãã
with open("example.png", "rb") as file:
header = file.read(8) # æåã®8ãã€ããååŸ
print("PNG Header:", header)
åºåäŸ
PNG Header: b'ÂPNG
'
ãã®ããžãã¯ãã³ããŒã確èªã§ããã°ããã®ãã¡ã€ã«ã¯ PNGãã©ãŒããã ã§ããããšãããããŸãã
6.2 WAVé³å£°ãã¡ã€ã«ã®ãã€ããªè§£æ
WAVãã¡ã€ã«ãšã¯ïŒ
WAVïŒWaveform Audio File FormatïŒã¯ãéå§çž®ã®é³å£°ãã¡ã€ã«ãã©ãŒãããã§ãããããããŒéšåã« ãµã³ãã«ã¬ãŒãããã£ã³ãã«æ°ããããæ·±åºŠ ãªã©ã®æ å ±ãå«ãã§ããŸãã
WAVãã¡ã€ã«ã®ããããŒè§£æ
WAVãã¡ã€ã«ã¯ RIFFãã©ãŒããã ã䜿çšããŠãããæåã®44ãã€ãã«éèŠãªã¡ã¿ããŒã¿ãæ ŒçŽãããŠããŸãã
WAVã®ãã€ããªããŒã¿ãè§£æãã
import struct
with open("example.wav", "rb") as file:
header = file.read(44) # WAVããããŒéšåïŒ44ãã€ãïŒãååŸ
# "RIFF" ãã£ã³ã¯ã®ç¢ºèª
riff, size, wave = struct.unpack('<4sI4s', header[:12])
# ãã©ãŒãããæ
å ±ã®è§£æ
fmt, fmt_size, audio_format, num_channels, sample_rate = struct.unpack('<4sIHHI', header[12:24])
print(f"RIFF Header: {riff}")
print(f"Format: {wave}")
print(f"Audio Format: {audio_format}")
print(f"Channels: {num_channels}")
print(f"Sample Rate: {sample_rate} Hz")
åºåäŸ
RIFF Header: b'RIFF'
Format: b'WAVE'
Audio Format: 1
Channels: 2
Sample Rate: 44100 Hz
- RIFF â WAVãã¡ã€ã«ã§ããããšã瀺ãããžãã¯ãã³ããŒ
- Channels: 2 â ã¹ãã¬ãªé³å£°
- Sample Rate: 44100 Hz â CDé³è³ªã®ãµã³ããªã³ã°ã¬ãŒã
6.3 ç¬èªãã€ããªãã©ãŒãããã®è§£æ
ãã€ããªãã¡ã€ã«ã®äžã«ã¯ãã«ã¹ã¿ã ãã©ãŒãããã®ããŒã¿ ãä¿åãããŠããããšããããŸãã以äžã¯ãä»®æ³ã®ãã€ããªãã©ãŒããããPythonã§è§£æããäŸã§ãã
ãµã³ãã«ããŒã¿ã®ãã©ãŒããã
ãã€ãæ° | ããŒã¿å | å 容 |
---|---|---|
0-3 | I ïŒ4ãã€ãæŽæ°ïŒ | ãã¡ã€ã«ID |
4-7 | f ïŒ4ãã€ãæµ®åå°æ°ç¹ïŒ | ããŒãžã§ã³æ å ± |
8-17 | 10s ïŒ10ãã€ãæååïŒ | åå |
ãã€ããªãã¡ã€ã«ã®è§£æ
import struct
with open("custom_data.bin", "rb") as file:
data = file.read()
file_id, version, name = struct.unpack('<If10s', data)
print(f"File ID: {file_id}")
print(f"Version: {version}")
print(f"Name: {name.decode().strip()}")
åºåäŸ
File ID: 12345
Version: 1.2
Name: TestFile
6.4 ãŸãšã
- PNGç»åã®ãã€ããªè§£æ ã§ã¯ãããžãã¯ãã³ããŒããã§ãã¯ããããšã§ç»åãã©ãŒããããèå¥ã§ããã
- WAVé³å£°ãã¡ã€ã«ã®ãã€ããªè§£æ ã§ã¯ãããããŒãããµã³ãã«ã¬ãŒãããã£ã³ãã«æ°ãååŸã§ããã
- ç¬èªãã©ãŒãããã®ãã€ããªãã¡ã€ã«ãã
struct.unpack()
ã䜿ãããšã§è§£æå¯èœã
7. ãã€ããªãã¡ã€ã«ãæ±ãéã®æ³šæç¹ãšãã¹ããã©ã¯ãã£ã¹
Pythonã§ãã€ããªãã¡ã€ã«ãæ±ãéã«ã¯ãããŒã¿ã®ç ޿鲿¢ã»ããã©ãŒãã³ã¹ã®æé©åã»å®å šæ§ã®ç¢ºä¿ ãªã©ãããã€ãã®éèŠãªãã€ã³ããæŒãããŠããå¿ èŠããããŸããæ¬ã»ã¯ã·ã§ã³ã§ã¯ããã€ããªããŒã¿ãé©åã«ç®¡çããããã®æ³šæç¹ãšãã¹ããã©ã¯ãã£ã¹ ã玹ä»ããŸãã
7.1 倧容éãã¡ã€ã«ã®åŠçãæé©åãã
ãã€ããªãã¡ã€ã«ã¯ãæ°çŸMBããæ°GB以äžã«ãªãããšããããŸããã¡ã¢ãªå¹çã®æªãåŠçãè¡ããšãPythonããã°ã©ã ã®åäœãé ããªã£ãããã¯ã©ãã·ã¥ããããã å¯èœæ§ããããŸãã
NGãªäŸïŒå€§å®¹éãã¡ã€ã«ãäžæ¬ã§èªã¿èŸŒã
with open("large_file.bin", "rb") as file:
data = file.read() # ãã¹ãŠã®ããŒã¿ãã¡ã¢ãªã«ããŒãïŒå±éºïŒ
åé¡ç¹
- ãã¡ã€ã«ãµã€ãºã倧ããå Žåãã¡ã¢ãªãå§è¿«ããŠåäœãé ããªã
- ã·ã¹ãã ã«ãã£ãŠã¯ã¡ã¢ãªäžè¶³ã§ã¯ã©ãã·ã¥ããå¯èœæ§ããã
æé©ãªæ¹æ³ïŒãã£ã³ã¯ïŒéšåïŒããšã«ããŒã¿ãèªã¿èŸŒã
with open("large_file.bin", "rb") as file:
while chunk := file.read(4096): # 4KBãã€èªã¿èŸŒã
process(chunk) # ããã§ããŒã¿ãåŠç
ã¡ãªãã
- ã¡ã¢ãªãå¹ççã«äœ¿ãã
- 倧容éãã¡ã€ã«ã§ãã¹ã ãŒãºã«åŠçå¯èœ
7.2 with
æã䜿ã£ãŠãã¡ã€ã«ã確å®ã«éãã
Pythonã§ã¯ããã¡ã€ã«ãéããåŸã«é©åã«éããªããšããªãœãŒã¹ãªãŒã¯ïŒæªäœ¿çšã®ãã¡ã€ã«ãã³ãã«ãæ®ãïŒãåŒãèµ·ããå¯èœæ§ããããŸãã
NGãªäŸïŒclose()
ãæç€ºçã«åŒã³å¿ãã
file = open("example.bin", "rb")
data = file.read()
# close() ãå¿ãããšãªãœãŒã¹ãéæŸãããªã
ãã¹ããã©ã¯ãã£ã¹ïŒwith
æã䜿ã
with open("example.bin", "rb") as file:
data = file.read()
# `with` æãæãããšããã¡ã€ã«ã¯èªåçã«éãããã
ã¡ãªãã
- ã³ãŒããã·ã³ãã«ã§å¯èªæ§ãåäž
- ãšã©ãŒãçºçããŠããã¡ã€ã«ã確å®ã«éãããã
7.3 ãšã³ãã£ã¢ã³ïŒãã€ããªãŒããŒïŒãæ£ããæå®ãã
ç°ãªãç°å¢ã§ãã€ããªãã¡ã€ã«ãæ±ãéã«ã¯ããšã³ãã£ã¢ã³ïŒãã€ãã®äžŠã³é ïŒ ã«æ³šæãå¿ èŠã§ãããšã³ãã£ã¢ã³ãç°ãªããšãããŒã¿ãæ£ããè§£éãããªã å¯èœæ§ããããŸãã
ãšã³ãã£ã¢ã³ | 説æ |
---|---|
ãªãã«ãšã³ãã£ã¢ã³ | Intelç³»CPUã䜿çšïŒäœäœãã€ããå ïŒ |
ããã°ãšã³ãã£ã¢ã³ | ãããã¯ãŒã¯ãããã³ã«ãäžéšã®CPUã䜿çšïŒé«äœãã€ããå ïŒ |
ãšã³ãã£ã¢ã³ãæèããããŒã¿ã®èªã¿èŸŒã¿
import struct
binary_data = b' '
# ãªãã«ãšã³ãã£ã¢ã³ãšããŠè§£é
value_le = struct.unpack('<I', binary_data)[0] # 1
print("Little Endian:", value_le)
# ããã°ãšã³ãã£ã¢ã³ãšããŠè§£é
value_be = struct.unpack('>I', binary_data)[0] # 16777216
print("Big Endian:", value_be)
ãã€ã³ã
<I
â ãªãã«ãšã³ãã£ã¢ã³>I
â ããã°ãšã³ãã£ã¢ã³- 誀ã£ããšã³ãã£ã¢ã³ã䜿çšãããšãå€ãæ£ããè§£éãããªã
7.4 äŸå€åŠçãçµã¿èŸŒãã§ãšã©ãŒãé²ã
ãã¡ã€ã«ã®èªã¿æžãæã«ã以äžã®ãããªãšã©ãŒãçºçããå¯èœæ§ããããŸãã
ãšã©ãŒ | åå |
---|---|
FileNotFoundError | ãã¡ã€ã«ãååšããªã |
PermissionError | èªã¿åã/æžãèŸŒã¿æš©éããªã |
struct.error | äžé©åãªãã€ããªãã©ãŒããã |
äŸå€åŠçãçµã¿èŸŒãã å®å šãªãã¡ã€ã«æäœ
import struct
try:
with open("example.bin", "rb") as file:
binary_data = file.read(4)
value = struct.unpack('<I', binary_data)[0]
print(f"Value: {value}")
except FileNotFoundError:
print("ãšã©ãŒ: ãã¡ã€ã«ãèŠã€ãããŸããã")
except struct.error:
print("ãšã©ãŒ: ãã€ããªããŒã¿ã®ãã©ãŒããããæ£ãããããŸããã")
except Exception as e:
print(f"äºæããªããšã©ãŒãçºç: {e}")
ã¡ãªãã
- ãšã©ãŒãçºçããŠãããã°ã©ã ãã¯ã©ãã·ã¥ããªã
- é©åãªãšã©ãŒã¡ãã»ãŒãžã衚瀺ã§ãã
7.5 ãã€ããªãã¡ã€ã«ãæ±ãéã®ãããã°æ¹æ³
ãã€ããªãã¡ã€ã«ã®å
容ã確èªãããå Žåãbinascii.hexlify()
ã hexdump
ã³ãã³ã ã䜿çšãããšããã€ããªããŒã¿ãèŠèŠçã«ãããã° ã§ããŸãã
Pythonã§ãã€ããªããŒã¿ã16鲿°è¡šç€º
import binascii
with open("example.bin", "rb") as file:
binary_data = file.read(16) # æåã®16ãã€ããååŸ
print(binascii.hexlify(binary_data))
åºåäŸ
b'89504e470d0a1a0a' # PNGãã¡ã€ã«ã®ããžãã¯ãã³ããŒ
ã³ãã³ãã©ã€ã³ã§ãã€ããªã確èªïŒLinux/macOSïŒ
hexdump -C example.bin | head
åºåäŸ
00000000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 |.PNG........IHDR|
7.6 ãŸãšã
- 倧容éãã€ããªãã¡ã€ã«ã¯ãã£ã³ã¯ïŒéšåïŒããšã«åŠçããã¡ã¢ãªæ¶è²»ãæãã
with
æã䜿ãããã¡ã€ã«ã確å®ã«éãã- ãšã³ãã£ã¢ã³ïŒãã€ããªãŒããŒïŒãèæ ®ããé©åãªåœ¢åŒã§ããŒã¿ãè§£éãã
- äŸå€åŠçãçµã¿èŸŒã¿ããã¡ã€ã«ã®èªã¿æžããšã©ãŒãé©åã«ãã³ããªã³ã°ãã
binascii.hexlify()
ãhexdump
ãæŽ»çšããŠãã€ããªããŒã¿ããããã°ãã
8. ãããã質åïŒFAQïŒ
ãã€ããªãã¡ã€ã«ã®èªã¿æžããè§£æã«ã€ããŠãå€ãã®äººãçåã«æããã€ã³ããFAQ圢åŒã§ãŸãšããŸãããPythonã䜿ã£ããã€ããªããŒã¿ã®åãæ±ãã«é¢ããäžè¬çãªåé¡ãšãã®è§£æ±ºçã解説ããŸãã
Q1: ããã¹ããã¡ã€ã«ãšãã€ããªãã¡ã€ã«ã®éãã¯ïŒ
é ç® | ããã¹ããã¡ã€ã« | ãã€ããªãã¡ã€ã« |
---|---|---|
ããŒã¿ã®ä¿ååœ¢åŒ | æåã³ãŒãïŒUTF-8, Shift-JISãªã©ïŒ | 0ãš1ã®ãã€ãå |
æ¡åŒµåã®äŸ | .txt , .csv , .json | .jpg , .png , .mp3 , .bin |
ç·šéæ¹æ³ | ã¡ã¢åž³ããšãã£ã¿ã§çŽæ¥ç·šéå¯èœ | ãã€ããªãšãã£ã¿ãå°çšããã°ã©ã ãå¿ èŠ |
é©çšäŸ | ããã°ã©ã ã®ãœãŒã¹ã³ãŒããèšå®ãã¡ã€ã« | ç»åãé³å£°ãåç»ãå®è¡ãã¡ã€ã« |
Q2: Pythonã§ãã€ããªãã¡ã€ã«ãéããšãã'rb'
ãš 'r'
ã®éãã¯ïŒ
ã¢ãŒã | 説æ |
---|---|
'r' | ããã¹ãã¢ãŒãïŒããã©ã«ãïŒãæ¹è¡ã³ãŒããèªå倿ããã |
'rb' | ãã€ããªã¢ãŒããæ¹è¡ã³ãŒãã倿ããããã®ãŸãŸã®ãã€ãåãæ±ã |
Q3: struct
ã¢ãžã¥ãŒã«ã®äœ¿ãæ¹ãåãããŸãããã©ã®ããã«äœ¿çšããŸããïŒ
Pythonã® struct
ã¢ãžã¥ãŒã«ã¯ããã€ããªããŒã¿ãæŽæ°ã»æµ®åå°æ°ç¹æ°ã»æååãšããŠå€æïŒã¢ã³ããã¯ïŒããããéã«å€æïŒããã¯ïŒããããã ããã«äœ¿çšããŸãã
ãã€ããªããŒã¿ãæŽæ°ãšããŠèªã¿èŸŒã
import struct
binary_data = b' ' # 4ãã€ãã®ããŒã¿
value = struct.unpack('<I', binary_data)[0] # ãªãã«ãšã³ãã£ã¢ã³ã®ç¬Šå·ãªãæŽæ°
print(value) # åºå: 1
Q4: ãã€ããªãã¡ã€ã«ãããã¹ãããŒã¿ã«å€æããæ¹æ³ã¯ïŒ
ãã€ããªããŒã¿ã 16鲿°è¡šèš ã«å€æãããšãå¯èªæ§ãåäžããŸãã
Pythonã§ãã€ããªããŒã¿ã16鲿°ã«å€æ
import binascii
with open("example.bin", "rb") as file:
binary_data = file.read()
hex_data = binascii.hexlify(binary_data)
print(hex_data)
Q5: ãã€ããªãã¡ã€ã«ã®èªã¿æžãã§æ°ãä»ããã¹ããšã³ãã£ã¢ã³ãšã¯äœã§ããïŒ
ãšã³ãã£ã¢ã³ïŒByte OrderïŒã¯ãããŒã¿ããã€ãåäœã§ã©ã®ããã«æ ŒçŽãããããç€ºãæŠå¿µ ã§ãã
ãšã³ãã£ã¢ã³ | 説æ |
---|---|
ãªãã«ãšã³ãã£ã¢ã³ïŒLittle EndianïŒ | äœäœãã€ããå ã«ä¿åãããïŒIntelç³»CPUã§äœ¿çšïŒ |
ããã°ãšã³ãã£ã¢ã³ïŒBig EndianïŒ | é«äœãã€ããå ã«ä¿åãããïŒãããã¯ãŒã¯éä¿¡ã§äœ¿çšïŒ |
Q6: Pythonã§å€§ããªãã€ããªãã¡ã€ã«ãå¹ççã«åŠçããæ¹æ³ã¯ïŒ
ã¡ã¢ãªäœ¿çšéãæããããã«ãããŒã¿ãå°ããªãã£ã³ã¯ïŒéšåïŒããšã«èªã¿èŸŒãæ¹æ³ãæšå¥š ãããŸãã
ãã£ã³ã¯ããšã«ããŒã¿ãåŠç
with open("large_file.bin", "rb") as file:
while chunk := file.read(4096): # 4KBãã€èªã¿èŸŒã
process(chunk) # ããã§ããŒã¿ãåŠç
Q7: ãã€ããªãã¡ã€ã«ããããã°ããæ¹æ³ã¯ïŒ
Pythonã® binascii.hexlify()
ã Linuxã® hexdump
ã³ãã³ãã䜿çšãããšããã€ããªããŒã¿ãèŠèŠçã«ç¢ºèªã§ããŸãã
Pythonã§ãããã°
import binascii
with open("example.bin", "rb") as file:
binary_data = file.read(16) # æåã®16ãã€ããååŸ
print(binascii.hexlify(binary_data))
Linux/macOSã§ hexdump
ã䜿çš
hexdump -C example.bin | head
ãŸãšã
- Pythonã§ã¯
'rb'
ã¢ãŒãã§ãã€ããªãã¡ã€ã«ãæ±ã struct
ã¢ãžã¥ãŒã«ã䜿ããšããã€ããªããŒã¿ãæ°å€ãæååã«å€æå¯èœ- ãšã³ãã£ã¢ã³ãèæ ®ããªããšãããŒã¿ãæ£ããè§£æã§ããªã
- 倧容éãã¡ã€ã«ã¯ãã£ã³ã¯ããšã«åŠçããããšã§ã¡ã¢ãªå¹çãæé©å
binascii.hexlify()
ãhexdump
ã§ãã€ããªããŒã¿ããããã°å¯èœ
æåŸã«
ããã§ãPythonã䜿ã£ããã€ããªãã¡ã€ã«ã®èªã¿æžãã»è§£æã®å®å šã¬ã€ãã宿ããŸããïŒãã€ããªãã¡ã€ã«ãæ±ãéã®åºç€ç¥èããå¿çšãŸã§ãäžéãã®ã¹ãã«ãç¿åŸã§ããã¯ãã§ãã
ä»åŸã¯ãå®éã®ãããžã§ã¯ããããŒã¿è§£æã«å¿çš ããããå®è·µçãªæŽ»çšãç®æããŠãã ããïŒð