Inspired_Blue
Inspired_Blue

Reputation: 2438

Python 3.3 Code to Download a file to a location and save as a given file name

For example I would like to save the .pdf file @ http://arxiv.org/pdf/1506.07825 with the filename: 'Data Assimilation- A Mathematical Introduction' at the location 'D://arXiv'.

But I have many such files. So, my input is of the form of a .csv file with rows given by (semi-colon is the delimiter):

url; file name; location.

I found some code here: https://github.com/ravisvi/IDM

But that is a bit advanced for me to parse. I want to start with something simpler. The above seems to have more functionality than I need right now - threading, pausing etc.

So can you please write me a very minimal code to do the above:

  1. save the file 'Data Assimilation- A Mathematical Introduction'
  2. from 'http://arxiv.org/pdf/1506.07825'
  3. at 'D://arXiv'?

I think I will be able to generalize it to deal with a .csv file.

Or, hint me a place to get started. (The github repository already has a solution, and it is too perfect! I want something simpler.) My guess is, with Python, a task as above should be possible with no more than 10 lines of code. So tell me important ingredients of the code, and perhaps I can figure it out.

Thanks!

Upvotes: 0

Views: 2548

Answers (2)

babypi
babypi

Reputation: 1

Using Python 3.6.5

Here is a method that can create a folder and save the file in a folder. dataURL - Complete URL path data_path - Where the file needs to be saved. tgz_path - Name of the datafile with the extension.

def fetch_data_from_tar(data_url,data_path,tgz_path):
if not os.path.isdir(data_path):
    os.mkdir(data_path)
    print ("Data Folder Created @ Path", data_path)
else: 
    print("Folder path already exists")
tgz_path = os.path.join(data_path,tgz_path)
urllib.request.urlretrieve(data_url,filename=tgz_path)
data_tgz = tarfile.open(tgz_path)
data_tgz.extractall(path=data_path)
data_tgz.close()

Upvotes: 0

maniexx
maniexx

Reputation: 695

I would use the requests module, you can just pip install requests. Then, the code is simple:

import requests

response = requests.get(url)
if response.ok:
    file = open(file_path, "wb+") # write, binary, allow creation
    file.write(response.content)
    file.close()
else:
    print("Failed to get the file")

Upvotes: 1

Related Questions