I have a problem because I need to download a file using python but I cannot use the libraries urllib, urllib2 and urllib3 neither request
If someone can help me I thanks him a lot
I have a problem because I need to download a file using python but I cannot use the libraries urllib, urllib2 and urllib3 neither request
If someone can help me I thanks him a lot
 
    
    you can use subprocess module and curl command
import subprocess
result = subprocess.run(['curl', 'https://www.google.com'], stdout=subprocess.PIPE)
# do with result
 
    
     
    
    You need to do wget in terminal to get the package. Why can't you use these!? (I can't ugh comment)
Try using requests to get the data of the file and write it a path if you can't use urllib's package.
To download files with requests use this example from here
def download_file(url):
    local_filename = url.split('/')[-1]
    # NOTE the stream=True parameter
    r = requests.get(url, stream=True)
    with open(local_filename, 'wb') as f:
        for chunk in r.iter_content(chunk_size=1024): 
            if chunk: # filter out keep-alive new chunks
                f.write(chunk)
                #f.flush() commented by recommendation from J.F.Sebastian
    return local_filename
Here's the aiohttp example for async functions:
import aiohttp
async def download_file(url):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as resp:
            with open(filename, 'wb') as fd:
                while True:
                    chunk = await resp.content.read(chunk_size)
                    if not chunk:
                        break
                    fd.write(chunk)
url = "URL"
await download_file(url)
I recommend using aiohttp if you don't can't use requests.
 
    
    Thanks to all, finally I could solve my problem I give you the solution that I used
import * from socket
    s = socket(AF_INET, SOCK_STREAM)
    s.connect((url, port))
    file_mess="GET /" + step2[:5] + " HTTP/1.1\r\n\r\n"
    s.send((file_mess).encode('utf-8'))
    print(s.recv(1024).decode('utf-8'))
    print(s.recv(1024).decode('utf-8'))
I used the second print for obtaining all the data, because with the first I only get a 200 OK
