2015-01-04 3 views
0

나는 S3와 함께 작업하기 위해 Python Boto로 작업 중이다. 양동이의 이름이 ... 양동이라고 가정 해 봅시다.S3 - 디렉토리의 키를 얻는다

버킷에는 디렉토리가 있습니다. 내에서 하나, 둘, 셋 ... 다른 디렉토리 하나, 둘, 셋 등 각각 안에 많은 파일이 있습니다.

/x와 같은 디렉토리가 있는지 확인하려고합니다. 나는 다음과 같이 시도했다.

key = bucket.get_key('/a/one/') 

운이 없다. 내 해결 방법은

list(bucket.list("a/", "/")) 

을 반환하고, x는 목록에 존재하는지 확인하는 것이 었습니다,하지만 지저분한 것 같다. 또한 반환 된 목록 내에서 'a /'키가 있습니다. 'a /', 디렉토리가 키인 경우 'a/one /'도 키가되어야하지 않습니까?

가장 좋은 방법은 무엇입니까? 어떤 도움을 주시면 감사하겠습니다.

답변

1

S3에는 디렉토리 개념이 없습니다. 디렉토리는 일반적으로이 경로 디렉토리와 같은과 핵심이지만, 양동이에 하나의 키의 예를 완벽하게 유효한 경우 "기존의"간주됩니다

'/path/to/file/with/no/dir/file.txt' 

사항에 대한 주요 항목이 없습니다 :

'/path/' 
'/path/to/' 

있지만있을 수 있지만 관리해야합니다.

dir_exists = any([k.startswith(path) for k in s3_file_names]), 

그렇지 않으면 당신이 양동이에 디렉토리 파일을 유지해야한다 : 당신은 무엇을 할 수 있는지

는 키 중 하나는 당신이 확인하고있는 디렉토리에있는 경우, 같은 것을 볼 수있다.

+0

그래서 x가 목록에 존재하는지 확인하는 것은 당초 생각했던 것처럼 엉망이 아닙니다. – intl

+0

파일'/ a/b/c'가있을 수 있지만'/ a/b /'디렉토리의 항목이 없기 때문에 "거짓 부정"을 반환 할 수 있습니다. 너 정확히 뭘 하려구? 아마 더 좋은 대답이있을 것입니다. –

+0

단순히 디렉토리가 존재하는지 확인하고 싶습니다. 이 경우 a/x를 확인하고 싶습니다. 여기서 x는 제가 확인한 것이고 존재합니다. – intl

관련 문제