슬기로운 개발자생활/Python

[Python] 파이썬 파일 생성, 쓰기, 파일 이름 변경, 파일 + 폴더 탐색, 삭제 패키지

개발자 소신 2020. 11. 25. 12:25
반응형

안녕하세요 ! 소신입니다.

 

 

파이썬 분석을 진행할 때 꽤 많이 쓰는게 다시 찾고 그러면 귀찮은게 많더라구요

 

데이터 수집을 하면서 바로바로 원하는 파일에 저장하고,

특정 확장자명을 가지는 파일이나 폴더를 탐색하고,

수많은 파일의 이름을 동시에 변경, 삭제하는 것을 패키지로 모아봤습니다.

 

github.com/svstar94/SDAU

 

svstar94/SDAU

JJ Data Analysis Notes in Github (Package). Contribute to svstar94/SDAU development by creating an account on GitHub.

github.com

 

사용방법은 ipynb를 참고하시면 되고

FileManager.py를 다운받아서 import해주시면 됩니다.


ㅁ 파일 생성, 쓰기

 

데이터를 수집하고 바로바로 저장할 때 사용하는 패키지입니다.

import FileManager

# .txt
FM = FileManager.FileMaker(FOLDER_PATH='D:/Datas/', MAX_DATAS=50000, FILE_TYPE='.txt')
FM.Start()
FM.Write_Data('데이터 저장')
FM.Write_Data('데이터 저장')

# 중요
FM.Close_File()

JM = FileManager.JsonMaker(FOLDER_PATH='D:/Datas/', MAX_DATAS=50000)
JM.Start()
JM.Write_Data(
    {
        'key1' : 'value1',
        'key2' : 'value2'
    }
)

# 중요
JM.Close_File()

CM = FileManager.CSVMaker(FOLDER_PATH='D:/Datas/', MAX_DATAS=50000)
CM.Start(COLUMNS_NAMES='column1 column2 column3 column4')
CM.Write_Data(['value1', 'value2', 'value3', 'value4'])
CM.Close_File()

 

FileMaker, JsonMaker, CSVMaker로 파일 생성을 위한 객체를 선언해주고

Start()로 폴더 디렉토리와 파일을 순차적으로 작성하기 위한 기반을 잡아줍니다.

Write_Data()를 데이터 수집하면서 호출해주시면 됩니다.

마지막에 Close_File()로 닫아줘야 됩니다 ! (강제종료시 깨질 수 있음)

 


ㅁ 파일 탐색

 

특정 폴더 내의 파일이나 폴더를 찾을 때 사용합니다.

import FileManager

FS = FileManager.File_Search(FOLDER_DIR='D:/Datas', FILE_TYPE='.', ONLY_FOLDER=True)

FS # List
### ["D:/Datas\\askjdasd'", 'D:/Datas\\askjdclkz', 'D:/Datas\\Insta']

 

함수를 실행하면 List를 받을 수 있고, 특정 확장자명 뿐 아니라 폴더만 탐색할 수 있습니다.

 


ㅁ 파일 이름 변경

 

파일 이름을 똑같이 바꿔줘야될 때가 있죠? 그리고 확장자명도 한 번에 바꿔줘야 될 때가 있는데

그럴 때 엄청나게 많은 파일이 있으면 일일이 파일명을 원하는 이름으로 바꾸기 쉽지 않아서 만들었습니다.

import FileManager

# 100개의 파일 생성
for i in range(100):
    JM = FileManager.JsonMaker(FOLDER_PATH='D:/Datas/', MAX_DATAS=50000)
    JM.Start()
    JM.Write_Data(
        {
            'key1' : 'value1',
            'key2' : 'value2'
        }
    )
    JM.Close_File()
    
# 100개의 파일이 검색됨
FS = FileManager.File_Search('D:/Datas', '.json', ONLY_FOLDER=False)
FS[-5:]

#['D:/Datas\\096.json',
# 'D:/Datas\\097.json',
# 'D:/Datas\\098.json',
# 'D:/Datas\\099.json',
# 'D:/Datas\\100.json']

# 이름 변경
FileManager.Change_Name(FOLDER_PATH='D:/Datas', FILE_TYPE='.json', TARGET_NAME='Test', TARGET_TYPE='.json')

FS = FileManager.File_Search('D:/Datas', '.json', ONLY_FOLDER=False)
FS[-5:] # 0부터 시작해서 99로 끝남

#['D:/Datas\\Test_95.json',
# 'D:/Datas\\Test_96.json',
# 'D:/Datas\\Test_97.json',
# 'D:/Datas\\Test_98.json',
# 'D:/Datas\\Test_99.json']

 

파일이름과 확장자를 쉽게 변경할 수 있습니다

 


 

ㅁ 파일, 폴더 삭제

 

사실 이건 File Search를 활용해서 반복문만 돌려주고

한줄만 추가하면 되는거라 그냥 소개만 하겠습니다.

 

# 파일 삭제
import os
FS = FileManager.File_Search(r'D:\Datas', '.json', ONLY_FOLDER=False)
for f in FS:
    os.remove(f)

# 폴더 삭제
FS = FileManager.File_Search(r'D:\Datas\asdasdf', '.', ONLY_FOLDER=True)
for d in FS:
    os.rmdir(d)

 

파일 삭제는 os.remove(file)

폴더 삭제는 os.rmdir(d)

입니다.

정말 간단하죠?

 

감사합니당

반응형