2017-09-25 8 views
0

절대적이지만 상대적인 방식으로 표현하지 않고 서브 폴더에 무언가를 다운로드하려면 urlretrieve()을 사용할 수 있습니까? 예를 들어 : 나는 파일 이름 파이썬에 경로를 추가하위 폴더로 urlretrieve() 파일 다운로드

urllib.request.urlretrieve(url, '/downloads/2017/foo.txt') 

매번 오류 다음과 같은 예외 :

File "C:\Program Files\Python36\lib\urllib\request.py", line 258, in urlretrieve tfp = open(filename, 'wb') FileNotFoundError: [Errno 2] No such file or directory: '/downloads/2017/foo.txt'

을하지만이 코드를 사용할 때 :

urllib.request.urlretrieve(url, 'foo.txt') 

그것을 행복하게 파일을 다운로드 .

나는 여기에 기본적인 것을 놓치고 있다고 생각하지만, 잠시 동안 interwebs를 검색 한 후에 나는 아직 답을 찾지 못했다. 누구든지 상대적 파일 경로가 urlretrieve() 방법으로 표현되어야한다는 것을 알고 있습니까?

+0

선행 슬래시를 제거하십시오.''downloads/2017/foo.txt ''를 사용하십시오. 선행 슬래시는 컴퓨터가 파일 시스템의 루트 (즉,'C : \\')로 이동하도록 지시합니다. 현재 디렉토리에 상대적인 경로를 가지려면 슬래시로 시작할 필요가 없습니다. –

+0

@HaydenSchiff 여전히 같은 오류입니다. 심지어 두 개의 백 슬래시를 사용하여 시도하고 동일한 오류가 발생합니다. – stendarr

+1

이 스크립트를 실행중인 디렉토리에 "downloads"및 "2017"폴더가 이미 있습니까? –

답변

0

urllib.request.urlretrieve()을 사용하는 경우 프로그램 위치가 아닌 다른 위치에 파일을 저장하려면 참조중인 폴더가 이미 존재하는지 확인해야합니다.

for i in directories: 
    if not os.path.isdir(i): 
     os.makedirs(i) 

확인 맞춤법 실수는 여전히 FileNotFoundError을받을 경우 : 그들은 존재하지 않는 경우 또는 당신은 당신이 필요로하는 폴더를 생성하려면 다음 코드를 사용할 수 있습니다.