<jupyter_start><jupyter_text>File - 파일- 파이썬을 이용해서 파일을 읽고 쓰기가 가능합니다.- 파일을 읽고 쓸 때의 파일 작성에 대한 옵션    - w: 파일 쓰기 (덮어쓰기)    - x: 파일 쓰기 (파일이 존재하면 에러 발생)    - r: 파일 읽기    - a : 파일에 추가쓰기(append 같은것)- 파일을 읽고 쓸 때의 파일 타입에 대한 옵션    - t : 텍스트 데이터 타입 : 문자열을 저장할 때 사용    - b : 이진데이터 타입 : 객체를 저장할 때 사용- open : 파일을 열때 사용하는 함수 open("파일 경로 및 이름","옵션") 두개의 파라미터 온다.  파일 쓰기<jupyter_code>s = """data
science
fighting!!
"""

# 마지막 """ 한줄 띄우고 하면 저장 될 때도 마지막 한줄 더 나온다.
f = open("test.txt","wt")
f.write(s)
f.close()
# print로 파일쓰기 - 프린트에 파일 만드는 옵션 사용해서 만든다.
f = open("test2.txt","wt")
print(s, file=f, end="")
f.close()
# xt

s = "datascience"
f = open("test3.txt", "xt")
f.write(s)
f.close()
# 이진 파일 쓰기 - binary 파일 쓰깈

# wb 
# byte 라는 함수 사용할 것 : 이진 데이터로 바꿔주는 함수

range(10)
data = bytes(range(10)) # 이진수로 변경된다.
data
f = open("range.b", "wb")
f.write(data)
f.close()<jupyter_output><empty_output><jupyter_text>파일 읽기<jupyter_code># 2진파일 읽기
f = open("range.b", "rb")
data = f.read()
f.close()
list(data)
# 텍스트 파일 읽기
f = open("test.txt", "rt")
s = f.read()
f.close()
print(s)
# 텍스트 파일을 일부만 읽어올 수도 있다.

f = open("test.txt", "rt")
s = f.read(10) # 여기에 글자수 적어주면 10자만 읽어오게 된다.
f.close()
print(s)
# 텍스트 파일 한줄 읽어오기

f = open("test.txt", "rt")
s = f.readline() # readline
f.close()
print(s)
# 텍스트 파일 두줄 읽어오기

f = open("test.txt", "rt")

s = f.readline()
print(s)

s = f.readline()
print(s) # 커서가 옮겨진 상태에서 다음 해당하는 줄 읽어오게 된다.

f.close()
f = open("test.txt", "rt")
s = f.readlines()
f.close()
print(s)<jupyter_output>['data\n', 'science\n', 'fighting!!\n']<jupyter_text>close( ) 써서 안닫아도 된다.  with- 파일을 열때 close 함수를 호출하지 않아도 됩니다.<jupyter_code>with open("test.txt", "rt") as f:
    s = f.read()
    print(s)
    
# 많이 쓴다. with open으로 close에 대한 신경 안써도 되서 많이 사용<jupyter_output>data
science
fighting!!<jupyter_text>Pickle - 피클 **** 많이 사용한다.- 객체를 저장하는 것을 직렬화라고 합니다.- pickle 파이썬에서 객체를 직렬화해서 저장하고 복원하는 모듈- import 해줘야한다.<jupyter_code>import pickle
class A:
    def __init__(self, data):
        self.data = data
    def disp(self):
        print(self.data)

a = A("pickle test")
a.disp()

# 객체를 피클 파일로 저장하는 것이다.
with open("obj.p","wb") as f:
    pickle.dump(a, f) # 저장시 a라는 오브젝트 f라는 파일에  (obj, file)
with open("obj.p","rb") as f:
    load_a = pickle.load(f)
load_a.disp()
# 모델을 피클 파일로 저장해서 사용을 한다. 조금 더 효율적으로 저장하고 쓰기 위해서 피클 파일 사용한다.

# 피클 모델에 있는 write 를 사용하는 것이다.<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.17114810072556552, 'fraction_numerical': 0.004694835680751174, 'mean_word_length': 3.2386980108499097, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '444562', 'license': 'MIT', 'n_tokens_mistral': 1530, 'n_tokens_neox': 1820, 'n_words': 330, 'path': 'python/01_python_basic/08_file_pickle.ipynb', 'repo_name': 'hyelansgithub/fastcampus-programming', 'size': '2343'}