300x250
파이썬 파일 목록을 CSV로 저장하기
이전 포스팅에 이어 GUI로 출력된 리스트를 엑셀(CSV)로 저장하는법을 작성하였습니다.
* 핵심 코드
- pandas 패키지 설치 필요.
# list를 dataFrame으로 변환
transdata = pandas.DataFrame(file_list, columns=['파일명'])
# 추출 경로, index 제거, 인코딩 설정
transdata.to_csv('D:\\test\\dir_path.csv', index=False, encoding='utf-8-sig')
* GUI 소스 코드
import sys, pandas, os
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QAbstractItemView, QHeaderView, QTableWidgetItem, QVBoxLayout, QLineEdit, QLabel, QPushButton, QMessageBox
from PyQt5.QtGui import QIcon
class MyApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('디렉토리 리스트 출력') #App Title
self.setWindowIcon(QIcon('cloud.png')) #favicon
# 위젯
self.qline = QLineEdit(self)
self.qtable = QTableWidget(self)
qlabel = QLabel('출력할 경로를 입력하세요', self)
qbtnList = QPushButton('List 출력', self)
qbtnExcel = QPushButton('Excel 추출', self)
# 클릭 이벤트
qbtnList.clicked.connect(self.listRun_clicked)
qbtnExcel.clicked.connect(self.excelRun_clicked)
# BoxLayout 설정
layout = QVBoxLayout()
layout.addWidget(qlabel)
layout.addWidget(self.qline)
layout.addWidget(self.qtable)
layout.addWidget(qbtnList)
layout.addWidget(qbtnExcel)
# App 전체 레이어 설정
self.setLayout(layout)
self.setGeometry(300, 100, 600, 400) #App size
self.show()
# 리스트 출력 이벤트
def listRun_clicked(self):
dir_path = self.qline.text()
if not dir_path:
QMessageBox.about(self, '디렉토리 리스트 출력', '경로를 입력하세요.')
else:
file_list = os.listdir(dir_path)
file_list_count = file_list.__len__() #list 갯수
self.qtable.setRowCount(file_list_count)
self.qtable.setColumnCount(1)
self.qtable.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.qtable.setHorizontalHeaderLabels(["Type", "Size", "Value"])
self.qtable.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
for i in range(file_list_count):
self.qtable.setItem(i, 0, QTableWidgetItem(file_list[i].format()))
# 리스트 엑셀 추출 이벤트
def excelRun_clicked(self):
dir_path = self.qline.text()
if not dir_path:
QMessageBox.about(self, '디렉토리 리스트 출력', '경로를 입력하세요.')
else:
home_dir = os.getenv('USERPROFILE')
file_list = os.listdir(dir_path)
transdata = pandas.DataFrame(file_list, columns=['파일명']) # list를 dataFrame으로 변환
transdata.to_csv(home_dir + '\\Downloads\\dir_list.csv', index=False, encoding='utf-8-sig') # 추출 경로 및 인코딩 언어 설정
QMessageBox.about(self, 'Excel 추출', '추출이 완료되었습니다.')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyApp()
sys.exit(app.exec_())
* GUI 결과 화면
* 22.02.01 수정
- 사용자 디렉토리 값을 가져오게 설정 변경.
#추가/변경된 부분
home_dir = os.getenv('USERPROFILE')
transdata.to_csv(home_dir + '\\Downloads\\dir_list.csv', index=False, encoding='utf-8-sig')
반응형
'Python' 카테고리의 다른 글
Python) 파이썬 Pycharm에서 실행파일 만들기 (0) | 2022.01.16 |
---|---|
Python) 파이썬 URL, Base64 인코딩 디코딩 (0) | 2022.01.14 |
Python) 파일 목록 출력 - QLineEdit, QPushButton 이용 (0) | 2022.01.11 |
Python) 파일 목록 출력 (0) | 2022.01.08 |
Python) Django URLConf 설정 (0) | 2022.01.01 |