You gotta love a 2-line python solution

BartC bc at freeuk.com
Mon May 2 05:26:17 EDT 2016


On 02/05/2016 04:39, DFS wrote:
> To save a webpage to a file:
> -------------------------------------
> 1. import urllib
> 2. urllib.urlretrieve("http://econpy.pythonanywhere.com
>     /ex/001.html","D:\file.html")
> -------------------------------------
>
> That's it!
>
> Coming from VB/A background, some of the stuff you can do with python -
> with ease - is amazing.
>
>
> VBScript version
> ------------------------------------------------------
> 1. Option Explicit
> 2. Dim xmlHTTP, fso, fOut
> 3. Set xmlHTTP = CreateObject("MSXML2.serverXMLHTTP")
> 4. xmlHTTP.Open "GET", "http://econpy.pythonanywhere.com/ex/001.html"
> 5. xmlHTTP.Send
> 6. Set fso = CreateObject("Scripting.FileSystemObject")
> 7. Set fOut = fso.CreateTextFile("D:\file.html", True)
> 8.  fOut.WriteLine xmlHTTP.ResponseText
> 9. fOut.Close
> 10. Set fOut = Nothing
> 11. Set fso  = Nothing
> 12. Set xmlHTTP = Nothing
> ------------------------------------------------------
>
> Technically, that VBS will run with just lines 3-9, but that's still 6
> lines of code vs 2 for python.

It seems Python provides a higher level solution compared with VBS. 
Python presumably also has to do those Opens and Sends, but they are 
hidden away inside urllib.urlretrieve.

You can do the same with VB just by wrapping up these lines in a 
subroutine. As you would if this had to be executed in a dozen different 
places for example. Then you could just write:

getfile("http://econpy.pythonanywhere.com/ex/001.html", "D:/file.html")

in VBS too. (The forward slash in the file name ought to work.)

(I don't know VBS; I assume it does /have/ subroutines? What I haven't 
factored in here is error handling which might yet require more coding 
in VBS compared with Python)

-- 
Bartc



More information about the Python-list mailing list