저는 Python을 처음 사용하고 교과서와 StackOverflow를 가르쳐 왔습니다. 나는이 사이트에서 실제 사례를 통해 가장 잘 배우는 것처럼 보인다. 나는 현재의 문제로 누군가 나를 도울 수 있기를 바라고있다.반복적으로 (또는 재귀 적으로) 필터 디렉토리와 결과를 새 디렉토리에 복사
약 1,000 개의 파일이있는 디렉토리 (폴더)가 있습니다. 파일의 이름은 aaa_*
, bbb_*
, ccc_*
과 같은 접두사 (패턴)가 있습니다. 내가 디렉토리를 반복하고 지정된 접두사가있는 모든 파일을 복사하고 그 접두사 이름으로 새 디렉토리로 이동하고 싶습니다. 예를 들어, aaa_*
파일을 모두 /my_dir_path
에 찾아서 /my_new_dir_path/aaa
에 복사하고 마찬가지로 모두 bbb_*
을 /my_new_dir_path/bbb
에 복사합니다. 새 디렉토리가 이미 작성되었습니다.
다음의 간단한, 보일러는, 스크립트는 새 디렉토리에 접두사 패턴 중 하나를 복사 작동 : 내가 고민하고있어 반복적으로 다음 패턴과 내 목록 fnmatch.filter
을 실행하는 방법입니다
dir = '/my_dir_path'
pattern = 'aaa_*'
dest = '/my_new_dir_path/aaa'
for root, dirs, files in os.walk(dir):
for filename in fnmatch.filter(files, pattern):
source = (os.path.join(root, filename))
shutil.copy2(source, dest)
궁극적으로 파일을 자신의 디렉토리에 출력합니다.
나는 패턴 목록이 *args
으로 여러 가지 다른 함수 정의를 작성하려고했지만 일반적으로 "filter()는 정확히 2 개의 인수 (3 개)가 필요합니다"라는 오류 메시지가 표시됩니다. (나는 여기에 당신을 보여줄 코드 예제가 없다는 것에 대해 사과한다. 지난 며칠 동안 나는 많은 대표적인 함수 정의가 없다는 것을 여러 버전 경험했다.)
나는 초심자 다. fnmatch.filter
을 재귀 적으로 만들 수 있는지 또는 대체 전략을 고안 할 수 있는지 여부는 알지 못합니다. 그런 다음 각 패턴 검색에서 결과 파일을 자체 디렉토리에 저장하는 방법의 문제점이 있습니다. 내가, 예를 들어, 내가 미리 사전을 만들 수
my_dict = {'my_new_dir_path/aaa': 'aaa_*', 'my_new_dir_path/bbb': 'bbb_*'}
생각하고 저장 결과 파일을 적절한 키 아래 값으로,하지만 난 경우에도 작동하도록 재귀를 확보하지 않은 것을 주어졌다 (즉, 인쇄) 나는 결과를 새로운 디렉토리에 복사하는 방법에 대해 연구하지 않았다.
재귀에서 원하는 결과가 확실하지 않습니다. 파일을 여러 단계로 이동 하시겠습니까? 공통 접두사로 디렉토리의 이름을 바꿉니 까? – Prune
원래 디렉토리에는 aaa_1, aaa_2, aaa_n, bbb_4, bbb_6, bbb_7 등의 파일이 있습니다. 'aaa_ *'인 모든 파일을 분리하고 'aaa'라는 폴더로 복사/이동 한 다음 모든 'bbb_ *'를 'bbb'라는 폴더로 옮깁니다. 새로운 디렉토리 (aaa, bbb 등)가 이미 생성되었습니다. – user69339