2017-09-25 6 views
0

サブタイトルに絶対的ではなく相対的な方法で何かをダウンロードするにはurlretrieve()を使用できますか?たとえば :サブフォルダにurlretrieve()でファイルをダウンロード

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

私は、ファイル名のpythonのパスを追加する毎回次のエラーがスローされます。

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') 

それは喜んでファイルをダウンロード。

ここでは何か基本的なものが欠けていると思いますが、かなり時間がたつにつれインターウェブを検索した後、まだ答えは見つかりませんでした。誰もが相対ファイルパスが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を取得する場合:彼らが存在しない場合は別の方法として、あなたはあなたが必要とするフォルダを生成するには、次のコードを使用することができます。

関連する問題