2017-12-03 2 views
3

여러 개의 디렉토리가있는 80GB 드라이브를 스캔하려고합니다. 각 디렉토리에는 확장자가 .txt 인 파일이 포함되어 있습니다.이 파일을 다른 디렉토리에 복사하고 싶습니까? 가능한 최소한의 시간에이 작업을 수행하고자합니다. 어떻게 이것을 파이썬에서 구현할 수 있습니까?Python에서 매우 큰 디렉토리를 스캔하는 가장 최적화 된 방법

import os 

DIRS = [dirs for dirs in os.listdir()] 

for var in DIRS: 
    if var.endswith('.txt'): 
     shutil.copy('C:\\users\\testfolder', var) 

더 나은 & 최적화 방법은 이러한 목표를 달성하기 :이 방법으로이 작업을 수행 할 수 있어요

?

+2

이 병 목은 실제 드라이브의 읽기/쓰기 시간이 될 것이라고 생각합니다. 코드를 수정하는 데 많은 공간이 있다고 생각합니다. – Nevado

+0

감사합니다! 나는 (지도, 필터 & 체인) 또는 subprocess.call() 또는 다른 접근법을 사용하여 읽기 쓰기 시간을 줄일 수 있는지 확인하고 싶다. –

+0

이후 많은 스레드가 I/O 시간에 대해 이야기하고있었습니다. 스레드가 여기에 도움이 될 수 있다고 생각합니다. –

답변

1

더 깊은 폴더 구조가있는 경우 os.walk 또는 os.scandir은 폴더 구조를 효율적으로 이동하기 위해 만들어졌습니다. os.listdir을 사용하면 큰 숫자 일 경우 os.scandir과 같은 발전기보다 훨씬 느린 목록을 얻을 수 있습니다.

의견에서 언급했듯이 단일 hdd에서 쓰기 작업 속도를 높일 수는 없지만 읽기 작업은 여러 프로세스의 이점을 얻을 수 있습니다.

관련 문제