2016-06-30 7 views
0

내 서버의 파일을 대체하려는 장고 프로젝트에서 작업 중입니다. 이렇게하는 한 가지 방법은 파일 이름이 이미 있고 새 파일을 그 위치에 저장하는 경우 파일을 제거하는 것입니다.파이썬 파일 경로가 디렉토리로 간주되는 이유

제 문제는 /data.xlsx로 끝나는 파일 경로가 디렉토리로 간주된다는 것입니다. 경로가이 비록 파이썬에서, os.isfile (경로), 거짓과 os.isdir (경로)를 반환 true를 돌려 :

"G:/username/path/to/django/project/static/data/data.xlsx" 

os.remove 같은 (경로를 반환

path = os.path.normpath(os.path.join(settings.MEDIA_ROOT, name)).replace('\\', '/') 

) 경로는 파일 경로가 아니기 때문에 OSError를 반환합니다. 그리고 나는이 파일 (0777)에 대한 모든 사용 권한을 확인했습니다.

저는 python이 이것을 어떻게 Excel 파일인지 디렉토리인지 이해하지 못합니다. 누군가 나를 도울 수 있습니까? 나는 어떤 디버깅 아이디어도 남겨 두지 않았다.

미리 감사드립니다.

답변

0

경로 이름은 파일 또는 디렉토리인지 여부를 정의하지 않습니다. 파일 이름이 "/tmp/my/directory"이고 디렉토리가 "/tmp/my/file.xls" 인 경우 이름을 지정할 수 있습니다. 마찬가지로, 파이썬은 을 결정하지 않습니다. 경로가 파일인지 디렉토리인지 여부 만 확인합니다. 파이썬이 파일이 디렉토리에 해당한다고하면, OS가 디렉토리라고 말합니다. OS가 심각하게 엉망이거나 실제로 path이라는 디렉토리가 있습니다.

힌트 : 나중에 가능성이 있습니다. path에서 디렉토리를 제거해보십시오.

+0

좋아요. 그래서 코드에서 data.xlsx라는 비어있는 디렉토리를 만들었을 것입니다. (아마도 지난 며칠 동안 수백만 가지를 시도했기 때문에) 아마도 shutil.rmtree (path) os.remove (path)는 오류를 발생시키지 않습니다. 그리고 대답 btw 주셔서 감사합니다, 나는 우리가 확장명이 폴더를 지정할 수 있다는 것을 몰랐습니다. 나는 그것이 매우 새로운 haha이기 때문에 엉망이 된 것은 나의 OS가 아니기를 바랐다! –