専門ユニット2/山内研セミナー(2023/10/17 part2)

関連サイトと資料


ファイル操作の基本のサンプルプログラム, バイナリファイルの操作のサンプルプログラム, pickleモジュールによるオブジェクトの直列化のサンプルプログラム

ファイル操作の基本のサンプルプログラム

sample.txt
Hello Python
  
Hello Deep Insider
    

test1.py
myfile = open('sample.txt')
lines = myfile.read()
myfile.close()
  
print(lines)
    

test2.py
myfile = open('sample.txt')
lines = myfile.read()
myfile.close()
  
for count, line in enumerate(lines.split('\n')):
    print(f'{count}: {line}')
    

test3.py
myfile = open('sample.txt')
  
count = 0
line = myfile.readline()
while line != '':  # ファイル末尾でlineの内容が''になるまでループする
    print(f'{count}: {line}', end='')
    count += 1
    line = myfile.readline()
  
myfile.close()
    

test4.py
myfile = open('sample.txt')
  
for count, line in enumerate(myfile.readlines()):
    print(f'{count}: {line}', end='')
  
myfile.close()
    

test5.py
myfile = open('sample.txt')
  
for count, line in enumerate(myfile):
    print(f'{count}: {line}', end='')
  
myfile.close()
    

test6.py
myfile = open('myfile.txt', 'w')
  
myfile.write('Hello Python\n')
myfile.write('{0} * {1} * {2} = {3}\n'.format(1, 2, 3, 1*2*3))
number = 100
myfile.write(f'number is {number}\n')
  
myfile.close()
    

test7.py
myfile = open('myfile2.txt', 'w')
  
mylist = ['Hello Python', '', 'Hello World']
myfile.writelines([item + '\n' for item in mylist])
  
myfile.close()
    

バイナリファイルの操作のサンプルプログラム

test8.py
myfile = open('myfile.txt', 'w')  # テキストファイルを書き込み用にオープン
myfile.write('あ')  # 文字列「'あ'」を書き込み
myfile.close()
  
myfile = open('myfile.txt', 'rb')  # テキストファイルをバイナリモードで読み込み用にオープン
content = myfile.read()
print(content)
myfile.close()
  
print(content.decode())
    


sample.gif

test9.py
def get_dimension(filename):
    f = open(filename, 'rb')
    spec = f.read(6).decode()
    width = int.from_bytes(f.read(2), 'little')
    height = int.from_bytes(f.read(2), 'little')
    f.close()
    print(f'this file is {spec}, size: {width} x {height}')
  
get_dimension('sample.gif')
    

test10.py
from struct import pack
  
myfile = open('myfile.bin', 'wb')
  
data = pack('b', 100)
myfile.write(data)
myfile.close()
    

test11.py
from struct import unpack, calcsize
  
myfile = open('myfile.bin', 'rb')
size = calcsize('b')
  
content = myfile.read(size)
n = unpack('b', content)
myfile.close()
  
print(n)
    

pickleモジュールによるオブジェクトの直列化のサンプルプログラム

test12.py
import pickle
  
mydata = [{'name': 'shinji kawasaki', 'age': 120, 'height': 230, 'weight': 300},
          {'name': 'isshiki masahiko', 'age': 60, 'height': 180, 'weight': 60}]
some_data = 100
another_data = 'deep insider'
  
myfile = open('mydata.pickle', 'wb')
pickle.dump(mydata, myfile)
pickle.dump(some_data, myfile)
pickle.dump(another_data, myfile)
myfile.close()
    

test13.py
import pickle
  
myfile = open('mydata.pickle', 'rb')
rmydata = pickle.load(myfile)
rsome_data = pickle.load(myfile)
ranother_data = pickle.load(myfile)
print(rmydata)
print(rsome_data)
print(ranother_data)