So what is the difference between request and urllib.request?
Same library, just different collections?
Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.
So what is the difference between request and urllib.request?
Same library, just different collections?
Wow @TutorialDoctor. Just down loaded and ran the Web Browser tutorial. Very Nice.
Tagging this discussion for future reference. link text
Well that works pretty good @JonB.
I just learned how to transfer up a GIST.
First test:
https://gist.github.com/NickAtNight500
How do we download a ZIP file?
Backticks?
Ok, let's give it a try.
Here is a simple working version of your suggestion.
I like the 'wb' switch.
import requests
print()
destpath = 'ex24file.txt'
url = "https://raw.githubusercontent.com/grrrr/py/741ba0500bc49e8f6268f02d23e461649e8d457b/scripts/buffer.py"
with open(destpath,'wb') as file:
file.write(requests.get(url).content)
Well, not working on github.com
Getting coding error
Traceback (most recent call last):
File "/private/var/mobile/Containers/Shared/AppGroup/78B1F70D-7DE8-4840-87C8-F5C1D01E9EF5/Pythonista3/Documents/LPTHW/FileDownload.py", line 49, in <module>
fout.write(myfile)
UnicodeEncodeError: 'ascii' codec can't encode character '\xb7' in position 1367: ordinal not in range(128)
Well, that works modestly well. It downloaded both sample files for this Google code jam problem.
Revised version.
Makes a Downliad file in Documents.
Puts download file there
import console
import dialogs
import appex
import os.path
import urllib.request, urllib
#Make a downloads directory
os.chdir(os.path.expanduser('~'))
os.chdir(os.path.join(os.getcwd(),'Documents'))
test = os.path.isdir('Downloads')
print(test)
if test == False:
print('Downloads created')
os.makedirs('Downloads')
else:
print('Downloads exists')
print('Change dir to Downloads')
os.chdir(os.path.join(os.getcwd(),'Downloads'))
#Test if running as extenstion
test = appex.is_running_extension()
if test == True:
filein = appex.get_url()
else:
myrun = dialogs.alert('Manual entry?', '','Enter manual URL',"Dummy")
if myrun == 1:
filein = input("Enter the URL address of file to get:")
else:
filein = "https://raw.githubusercontent.com/grrrr/py/741ba0500bc49e8f6268f02d23e461649e8d457b/scripts/buffer.py"
fileparse = urllib.parse.urlparse(filein)
filepath,filename = os.path.split(fileparse.path)
fin = urllib.request.urlopen(filein)
fout = open(filename,'w')
fout.truncate()
bytemyfile = fin.read()
myfile = bytemyfile.decode("utf-8")
fout.write(myfile)
print (myfile)
fin.close()
fout.close()
Latest version,
Uses APPEX.
-- If running as a script, gets the file name from APPEX.
-- So navigate to file and invoke script.
-- No checking for the appropriate type of file.
If not run as a script
-- Allow manual entry of entire file path.
-- Alterbative is to use the dummy test url
I suppose I should make a 'download' directory and put the files in there, just below the root.
import console
import dialogs
import appex
import os.path
import urllib.request, urllib
test = appex.is_running_extension()
if test == True:
filein = appex.get_url()
else:
myrun = dialogs.alert('Manual entry?', '','Enter manual URL',"Dummy")
if myrun == 1:
filein = input("Enter the URL address of file to get:")
else:
filein = "https://raw.githubusercontent.com/grrrr/py/741ba0500bc49e8f6268f02d23e461649e8d457b/scripts/buffer.py"
fileparse = urllib.parse.urlparse(filein)
filepath,filename = os.path.split(fileparse.path)
fin = urllib.request.urlopen(filein)
fout = open(filename,'w')
fout.truncate()
bytemyfile = fin.read()
myfile = bytemyfile.decode("utf-8")
fout.write(myfile)
print (myfile)
fin.close()
fout.close()
Ok, I will have to try that. @lukaskollmer
How about this:
If I navigate to the file in Safari.
I can run a script.
Using APPEX will give me the URL
import appex
r = appex.get_url()
print(r)
Now I just need to put that url into the command.
And I can replace the hard code with a input()
filein = input("Enter the URL address of file to get:")
fileout = input("Enter the file name:")
filein = filepath + filename
fileout = filename
Ok, so if I want to keep the file name, I need something like this.
filepath = 'https://raw.githubusercontent.com/grrrr/py/741ba0500bc49e8f6268f02d23e461649e8d457b/scripts/'
filename = 'buffer.py'
filein = filepath + filename
fileout = filename
Trying to figure out how to simply download a file to my iPad.
I found a Python2.7 example, and modified it to this.
import urllib
filein = "https://raw.githubusercontent.com/grrrr/py/741ba0500bc49e8f6268f02d23e461649e8d457b/scripts/buffer.py"
fileout = 'readurl_test2.txt'
fin = urllib.urlopen(filein)
fout = open(fileout,'w')
fout.truncate()
bytemyfile = fin.read()
myfile = bytemyfile.decode("utf-8")
fout.write(myfile)
print myfile
fin.close()
fout.close()
For version 3, this works:
import urllib.request
filein = "https://raw.githubusercontent.com/grrrr/py/741ba0500bc49e8f6268f02d23e461649e8d457b/scripts/buffer.py"
fileout = "readurl_test3.txt"
fin = urllib.request.urlopen(filein)
fout = open(fileout,'w')
fout.truncate()
bytemyfile = fin.read()
myfile = bytemyfile.decode("utf-8")
fout.write(myfile)
print (myfile)
fin.close()
fout.close()
Ah, ok.
Was that when the also started requiring () with print statements?
I don't see a raw_input() command.
Input() works.
But how do I use raw_input()
Using an iPhone, how do we pass say 3 ARGV 's to a script when we run it.
Can't figure out how to run a script from a command line on the iPhone.