반응형

파일 입출력을 할 때 사전타입을 키:값으로 입력하는 방법에 대해서 

1. str(dict) 을 사용하는 방법
2. json 모듈을 이용하는 방법

1번은 아주 쉬운 방법이라 금방 성공했지만 2번의 경우 파일을 파이썬에서 입출력을 할 때는 문제가 없었지만 저장된 파일을 열어보니 한글이 유니코드 형태로 출력되었다.

 

=============================== Python ===============================

import json

dict = {'555': '123'}

with open('file.txt', 'w', encoding='UTF-8') as file:

     file.write(json.dumps(dict))

 

 

'저장된 결과'

{"555": "w\u3141"}

 

=============================== Python ===============================

 

문제를 해결하기 위해

1. 저장하는 방식을 .txt, .json 둘 다 사용해봤지만 둘 다 유니코드 문제가 발생하였다.

2. 인코딩 방식의 문제라고 생각하여 UTF-8, EUC-KR, ANSI 등으로 해봤지만 동일한 문제가 발생하였다.

3. 그럼 마지막으로 .dumps() 메서드를 사용 할 때 무슨 방식이 있을까하고 찾아봤는데 답이 있었다.

 

 

=============================== Python ===============================

import json

dict = {'555': '내용'}

with open('j.json', 'w', encoding='UTF-8-sig') as file:

     file.write(json.dumps(dict, ensure_ascii=False))

 

'''

'저장된 결과'

{"555": "내용"}

 

 

=============================== Python ===============================

 

.dumps() 메서드를 쓸 때 ensure_ascii = False 를 입력하면 정상적으로 입력이 되었다.

 

출처 : https://datamod.tistory.com/104

반응형
반응형

보통 네트워크 통신을 위해 requests를 많이들 쓴다.

import requests

 

당연히도 통신을 한다면 오류가 뜨는 Exception을 잡아야한다.

https://requests.readthedocs.io/en/latest/user/quickstart/#errors-and-exceptions

 

이 링크를 한번 자세히 읽어보고 사용하길 바란다.

 

import requests

url = 'Your.url.com'
try:
    req = requests.get(url)

except requests.exceptions.Timeout as errd:
    print("Timeout Error : ", errd)
    
except requests.exceptions.ConnectionError as errc:
    print("Error Connecting : ", errc)
    
except requests.exceptions.HTTPError as errb:
    print("Http Error : ", errb)

# Any Error except upper exception
except requests.exceptions.RequestException as erra:
    print("AnyException : ", erra)
반응형
반응형

리스트에서 같은 값 찾기

A = [1, 2, 3, 4, 5]
B = [9, 8, 7, 6, 5]

C = set(a) & set(b)
D = [i for i, j in zip(A, B) if i == j]

# C ==> {5}  (object)
# D ==> [5]  (list)

 

리스트에서 다른 값 찾기

A = [1, 2, 3, 4, 5]
B = [1, 3, 5, 7, 9]

C = list(set(A) - set(B))
D = list(set(B) - set(A))

# C ==> [2, 4]
# D ==> [7, 9]

 

반응형
반응형

PyMsSQL 을 사용할 경우

import pymssql
import getpass

tempServer = input("Enter host: ")
tempUser = input("Enter user: ")
tempPwd = getpass.getpass("Enter password: ")

try:
    phjTempConnection = pymssql.connect(server = tempServer,
                                        user = tempUser,
                                        password = tempPwd,
                                        port = '1433')
except pymssql.InterfaceError:
    print("A MSSQLDriverException has been caught.")

except pymssql.DatabaseError:
    print("A MSSQLDatabaseException has been caught.")

 

_mssql 을 사용할 경우

import _mssql
import getpass

tempServer = input("Enter host: ")
tempUser = input("Enter user: ")
tempPwd = getpass.getpass("Enter password: ")

try:
    phjTempConnection = _mssql.connect(server = tempServer,
                                       user = tempUser,
                                       password = tempPwd,
                                       port = '1433')

except _mssql.MssqlDriverException:
    print("A MSSQLDriverException has been caught.")

except _mssql.MssqlDatabaseException as e:
    print("A MSSQLDatabaseException has been caught.")
    print('Number = ',e.number)
    print('Severity = ',e.severity)
    print('State = ',e.state)
    print('Message = ',e.message)

 

 

반응형

+ Recent posts