프로그래밍/Python

[python] 랜덤 난수 생성해서 엑셀에 저장하기

홍반장水_ 2024. 10. 18. 17:53
반응형

[python] 랜덤 난수 생성해서 엑셀에 저장하기 

"""   
랜덤으로 생성된 문자열을 엑셀 파일에 저장
"""
import random
import string
import os
from captcha.image import ImageCaptcha
import pandas as pd  # pandas 라이브러리를 사용하여 엑셀 파일 저장

# 2023-05-26 ngio add
# 파이썬 컴파일 경로가 달라서 현재 폴더의 이미지를 호출하지 못할때 작업디렉토리를 변경한다. 
import os
from pathlib import Path
# src 상위 폴더를 실행폴더로 지정하려고 한다.
###real_path = Path(__file__).parent.parent
real_path = Path(__file__).parent
print(real_path)
#작업 디렉토리 변경
os.chdir(real_path) 


# 랜덤 6자리 문자열 생성 함수
def generate_random_string(length=6):
    # string.ascii_uppercase: 영문 대문자 A-Z만을 포함합니다.
    # string.ascii_lowercase: 영문 소문자 a-z만을 포함합니다.
    # characters = string.ascii_letters + string.digits  # 영문 대소문자 + 숫자
    characters = string.ascii_uppercase + string.digits
    return ''.join(random.choices(characters, k=length)) 

# 초기 데이터
data = [['QWE123', 10001], ['RTY456', 10002]]

# 반복문을 통해 데이터 추가
for i in range(1, 10):
    #letter = chr(64 + i)  # A: 65 -> B: 66 -> C: 67 -> ...
    letter = generate_random_string();
    data.append([letter, (10002 + i)])

print(data)
print("\n\n")

# 중복 값 확인 함수
def check_duplicates(data):
    # 리스트를 튜플로 변환 (리스트는 set에 직접 넣을 수 없기 때문)
    data_as_tuples = [tuple(item) for item in data]
    
    # 집합의 크기와 리스트의 크기를 비교
    if len(data_as_tuples) != len(set(data_as_tuples)):
        print("중복된 값이 있습니다.")
    else:
        print("중복된 값이 없습니다.")

# 함수 호출
check_duplicates(data)
print("\n\n")


# DataFrame으로 변환
df = pd.DataFrame(data, columns=['random_word', 'word_index'])

# 결과 출력
print(df)
print("\n\n")
반응형