개발(IT)/Python(파이썬)

파이썬(Python) 파일 읽고(read) 쓰기(write)

isony 2024. 11. 23. 22:38
반응형

파이썬(Python) 파일 읽고(read) 쓰기(write)

< 기본 구조 >

# 파일열기
f = open(file_name[, mode, encoding = 인코딩방식])

# 파일읽기
data = f.read()

# 파일쓰기
f.write(data)

# 파일닫기
f.close()

 

< 파일 모드 (mode) >

모드(mode) 내  용
r 읽기모드로 파일열기(기본), 모드를 지정하지 않으면 기본적으로 읽기모드로 지정됨 (default)
w 쓰기모드로 파일열기, 같은 이름의 파일이 있으면 기존내용을 모두 삭제됨
x 쓰기모드로 파일열기, 같은 이름의 파일이 있으면 오류가 발생함
a 추가모드로 파일열기, 같은 이름의 파일이 없으면 (w)와 기능이 같음
b 바이너리 파일모드로 파일열기
t 테스트 파일모드로 파일열기(기본), 지정하지 않으면 기본적으로 텍스트모드로 지정됨 (default)

 

 

1. 파일 읽기

< 파일열기 (읽기모드) > 

# 파일 열기
f = open(file_name[, 'r', encoding = 인코딩방식])

# 파일 내용 읽기
data = f.read()

# 파일 닫기
f.close()

 

(예제 1)

%%writefile c:/Temp/셀레니움.txt
>> 셀레니움에서 요소를 찾는 방법
1) ID를 이용하여 요소 찾기
find_element(by = By.ID) 메서드를 사용하여 HTML 요소의 고유한 ID를 기반으로 요소를 찾을 수 있습니다
예를 들어, element = driver.find_element(by= By.ID, value = "element_id")와 같이 사용합니다.

2) 클래스 이름을 사용하여 요소 찾기
find_element(by=By.CLASS_NAME) 메서드를 사용하여 요소의 클래스 이름으로 요소를 찾을 수 있습니다
예를 들어, element = driver.find_element(by=By.CLASS_NAME, value="element_class")와 같이 사용합니다.

3) CSS 선택자를 사용하여 요소 찾기
find_element(by=By.CSS_SELECTOR) 메서드를 사용하여 CSS 선택자를 통해 요소를 찾을 수 있습니다
예를 들어, element = driver.find_element(by=By.CSS_SELECTOR, value=""#element_id"" )와 같이 사용합니다.

4) XPath를 사용하여 요소 찾기
find_element(by=By.XPATH) 메서드를 사용하여 XPath를 통해 요소를 찾을 수 있습니다
XPath는 HTML 문서의 요소를 경로로 표현하는 언어로 XPath를 사용한 방법을 가장 많이 사용하게 됩니다
예를 들어, element = driver.find_element(by=By.XPATH, value="//div[@class='element_class']")와 같이 사용합니다.

(결과)
Writing c:/Temp/셀레니움.txt


(예제1)
file_name = 'c:/Temp/셀레니움.txt'

f = open(file_name, 'r', encoding='utf-8')
data = f.read()
f.close()

print(data)


(결과)
>> 셀레니움에서 요소를 찾는 방법
1) ID를 이용하여 요소 찾기
find_element(by = By.ID) 메서드를 사용하여 HTML 요소의 고유한 ID를 기반으로 요소를 찾을 수 있습니다
예를 들어, element = driver.find_element(by= By.ID, value = "element_id")와 같이 사용합니다.

2) 클래스 이름을 사용하여 요소 찾기
find_element(by=By.CLASS_NAME) 메서드를 사용하여 요소의 클래스 이름으로 요소를 찾을 수 있습니다
예를 들어, element = driver.find_element(by=By.CLASS_NAME, value="element_class")와 같이 사용합니다.

3) CSS 선택자를 사용하여 요소 찾기
find_element(by=By.CSS_SELECTOR) 메서드를 사용하여 CSS 선택자를 통해 요소를 찾을 수 있습니다
예를 들어, element = driver.find_element(by=By.CSS_SELECTOR, value=""#element_id"" )와 같이 사용합니다.

4) XPath를 사용하여 요소 찾기
find_element(by=By.XPATH) 메서드를 사용하여 XPath를 통해 요소를 찾을 수 있습니다
XPath는 HTML 문서의 요소를 경로로 표현하는 언어로 XPath를 사용한 방법을 가장 많이 사용하게 됩니다
예를 들어, element = driver.find_element(by=By.XPATH, value="//div[@class='element_class']")와 같이 사용합니다.

 

 

2. 파일 한 줄씩 읽기

(1) 한 줄 읽기 : readline()

- 한 줄의 첫 문자부터 개행문자(\n)까지의 문자열을 읽습니다.

(예제1)
file_name = 'c:/Temp/셀레니움.txt'

f = open(file_name, 'r', encoding='utf-8')
line1 = f.readline()
line2 = f.readline()
f.close()

print(line1, end='')
print(line2, end='')


(결과)
>> 셀레니움에서 요소를 찾는 방법
1) ID를 이용하여 요소 찾기



(예제2)
file_name = 'c:/Temp/셀레니움.txt'

f = open(file_name, 'r', encoding='utf-8')
line_num = 0

while True:
    line = f.readline()
    if (line == ''):
        break
    line_num += 1
    print("{0}: {1}".format(line_num, line), end='')

f.close()


(결과)
1: >> 셀레니움에서 요소를 찾는 방법
2: 1) ID를 이용하여 요소 찾기
3: find_element(by = By.ID) 메서드를 사용하여 HTML 요소의 고유한 ID를 기반으로 요소를 찾을 수 있습니다
4: 예를 들어, element = driver.find_element(by= By.ID, value = "element_id")와 같이 사용합니다.
5: 
6: 2) 클래스 이름을 사용하여 요소 찾기
7: find_element(by=By.CLASS_NAME) 메서드를 사용하여 요소의 클래스 이름으로 요소를 찾을 수 있습니다
8: 예를 들어, element = driver.find_element(by=By.CLASS_NAME, value="element_class")와 같이 사용합니다.
9: 
10: 3) CSS 선택자를 사용하여 요소 찾기
11: find_element(by=By.CSS_SELECTOR) 메서드를 사용하여 CSS 선택자를 통해 요소를 찾을 수 있습니다
12: 예를 들어, element = driver.find_element(by=By.CSS_SELECTOR, value=""#element_id"" )와 같이 사용합니다.
13: 
14: 4) XPath를 사용하여 요소 찾기
15: find_element(by=By.XPATH) 메서드를 사용하여 XPath를 통해 요소를 찾을 수 있습니다
16: XPath는 HTML 문서의 요소를 경로로 표현하는 언어로 XPath를 사용한 방법을 가장 많이 사용하게 됩니다
17: 예를 들어, element = driver.find_element(by=By.XPATH, value="//div[@class='element_class']")와 같이 사용합니다.

 

 

(2) 한 줄씩을 요소로 갖는 리스트로 읽어오기 : readlines()

- 파일 전체의 모든 줄을 읽어서 한 줄씩을 요소로 갖는 리스트를 반환합니다.

file_name = 'c:/Temp/셀레니움.txt'

f = open(file_name, 'r', encoding='utf-8')
lines = f.readlines()
f.close()

line_num = 0
for line in lines:
    line_num += 1
    print("{0}: {1}".format(line_num, line), end='')


(결과)
1: >> 셀레니움에서 요소를 찾는 방법
2: 1) ID를 이용하여 요소 찾기
3: find_element(by = By.ID) 메서드를 사용하여 HTML 요소의 고유한 ID를 기반으로 요소를 찾을 수 있습니다
4: 예를 들어, element = driver.find_element(by= By.ID, value = "element_id")와 같이 사용합니다.
5: 
6: 2) 클래스 이름을 사용하여 요소 찾기
7: find_element(by=By.CLASS_NAME) 메서드를 사용하여 요소의 클래스 이름으로 요소를 찾을 수 있습니다
8: 예를 들어, element = driver.find_element(by=By.CLASS_NAME, value="element_class")와 같이 사용합니다.
9: 
10: 3) CSS 선택자를 사용하여 요소 찾기
11: find_element(by=By.CSS_SELECTOR) 메서드를 사용하여 CSS 선택자를 통해 요소를 찾을 수 있습니다
12: 예를 들어, element = driver.find_element(by=By.CSS_SELECTOR, value=""#element_id"" )와 같이 사용합니다.
13: 
14: 4) XPath를 사용하여 요소 찾기
15: find_element(by=By.XPATH) 메서드를 사용하여 XPath를 통해 요소를 찾을 수 있습니다
16: XPath는 HTML 문서의 요소를 경로로 표현하는 언어로 XPath를 사용한 방법을 가장 많이 사용하게 됩니다
17: 예를 들어, element = driver.find_element(by=By.XPATH, value="//div[@class='element_class']")와 같이 사용합니다.

 

 

 

3. 파일 쓰기 (write)

(예제)

file_name = "c:/Temp/구구2단.txt"

f = open(file_name, 'w')
f.write("[ 구구단 2단 ]\n")
for num in range(1,9):
    str = "2 x {0} = {1}\n".format(num, 2*num)
    f.write(str)
f.close()

print("생성한 파일 : ", file_name)


(결과)
생성한 파일 :  c:/Temp/구구2단.txt


!type c:\Temp\구구2단.txt

(결과)
[ 구구단 2단 ]
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16

 

 

4. with 문으로 파일 읽고 쓰기

< 형식 >

with open(file_name[, mode, encoding=인코딩방식]) as f:
    파일객체(f)를 이용해 파일을 읽거나 쓰기 코드

 

 

(예제1)

file_name = "c:/Temp/구구3단.txt"

with open(file_name, 'w') as f:
    f.write("[ 구구단 3단 ]\n")
    for num in range(1,9):
        str = "3 x {0} = {1}\n".format(num, 3 * num)
        f.write(str)

 

(예제2)

with open(file_name, 'r') as f:
    data = f.read()
    print(data)


(결과)
[ 구구단 3단 ]
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24

 

- with 문으로 파일을 열었을 때는 close()를 사용하지 않습니다.

 

 

반응형