>  기사  >  백엔드 개발  >  Python 튜토리얼: Python을 사용하여 대용량 파일을 분할하고 병합하는 방법은 무엇입니까?

Python 튜토리얼: Python을 사용하여 대용량 파일을 분할하고 병합하는 방법은 무엇입니까?

WBOY
WBOY앞으로
2023-04-22 11:43:081951검색

때때로 대용량 파일을 다른 사람에게 보내야 할 때가 있는데 이메일 첨부 파일 크기 제한 등 전송 채널의 한계나 네트워크 상태가 좋지 않아 대용량 파일을 나누어서 보내야 하는 경우가 있습니다. 작은 파일로 여러 번 보내고 받습니다. 그런 다음 이러한 작은 파일을 병합합니다. 오늘은 Python을 사용하여 대용량 파일을 분할하고 병합하는 방법을 공유하겠습니다.

아이디어 및 구현

텍스트 파일인 경우 줄 수에 따라 나눌 수 있습니다. 텍스트 파일이든 바이너리 파일이든 지정된 크기에 따라 분할될 수 있습니다.

Python의 파일 읽기 및 쓰기 기능을 사용하면 파일을 분할 및 병합하고 각 파일의 크기를 설정한 다음 지정된 크기의 바이트를 읽고 새 파일에 쓸 수 있습니다. 수신 측에서는 작은 파일을 순서대로 읽습니다. 획득한 바이트를 순서대로 파일에 기록하면 병합이 완료됩니다.

Split

size = 1024 * 1000 * 10# 10MB
with open("bigfile", "rb") as reader:
part = 1
while True:
part_content = reader.read(size)
if not part_content:
print("split done.")
break
with open(f"bigfile_part{part}","wb") as writer:
writer.write(part_content)

Merge

total_parts = 5
with open("bigfile","wb") as writer:
for i in range(5):
with open(f"bigfile_part{i}", "rb") as reader:
writer.write(reader.read())

타사 라이브러리 사용

직접 작성할 수도 있지만 다른 사람이 작성했지만 시간을 절약하여 직접 사용해 보는 것은 어떨까요? pip로 직접 설치하세요:

pip install filesplit

Split

from filesplit.split import Split
split = Split("./data.rar", "./output")
split.bysize(size = 1024*1000*10) # 每个文件最多 10MB

실행 후 출력 폴더에서 분할된 파일을 볼 수 있습니다:

一文教会你如何用 Python 分割合并大文件

파일 라인 수에 따라 분할할 수도 있습니다:

split.bylinecount(linecount = 10000) # 每个文件最多 10000 行

Merge

Merge는 폴더에 작은 파일을 병합해야 합니다. 이 도구를 사용하려면 폴더에 매니페스트 파일이 있어야 합니다. 해당 형식은 다음과 같습니다.

filename,filesize,header
data_1.rar,10000000,False
data_2.rar,10000000,False
data_3.rar,10000000,False
data_4.rar,10000000,False
data_5.rar,1304145,False

파일을 병합하는 코드는 디렉터리만 지정하면 됩니다. 병합될 대상 디렉터리, 병합된 파일 이름, 코드는 다음과 같습니다.

from filesplit.merge import Merge
merge = Merge(inputdir = "./output", outputdir="./merge", outputfilename = "merged.rar")
merge.merge()

실행 후 병합 디렉터리에서 병합된 파일을 볼 수 있습니다:

一文教会你如何用 Python 分割合并大文件

위 내용은 Python 튜토리얼: Python을 사용하여 대용량 파일을 분할하고 병합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제