<div class="gmail_quote">On Fri, Jul 9, 2010 at 12:41, Bill Janssen <span dir="ltr">&lt;<a href="mailto:janssen@parc.com">janssen@parc.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">So, FTP is *not* the &quot;default protocol&quot;.  On the other hand, if &lt;host&gt;</div>
actually begins with &quot;ftp.&quot;, it&#39;s a pretty good guess that FTP will<br>
work.  </blockquote><div><br></div><div>Actually, FTP *is* the default protocol for most URLs with hostnames in urllib.py.</div><div><br></div><div>urllib.open_file() delegates to open_ftp() if there&#39;s a any host other than the exact string &quot;localhost&quot;, and open_local_file() otherwise.</div>
<div><br></div><div>&gt;&gt;&gt; import urllib</div><div><div><div>&gt;&gt;&gt; f =urllib.urlopen(&#39;file:///foo.txt&#39;)</div></div><div><div><div>&gt;&gt;&gt; f =urllib.urlopen(&#39;file://localhost/foo.txt&#39;)</div>
</div><div><div>&gt;&gt;&gt; f = urllib.urlopen(&#39;file://<a href="http://www.google.com/">www.google.com/</a>&#39;)</div></div></div></div><div>Traceback (most recent call last):</div><div>  File &quot;&lt;stdin&gt;&quot;, line 1, in &lt;module&gt;</div>
<div>  File &quot;c:\python25\lib\urllib.py&quot;, line 82, in urlopen</div><div>    return opener.open(url)</div><div>  File &quot;c:\python25\lib\urllib.py&quot;, line 190, in open</div><div>    return getattr(self, name)(url)</div>
<div>  File &quot;c:\python25\lib\urllib.py&quot;, line 457, in open_file</div><div>    return self.open_ftp(url)</div><div>  File &quot;c:\python25\lib\urllib.py&quot;, line 538, in open_ftp</div><div>    ftpwrapper(user, passwd, host, port, dirs)</div>
<div>  File &quot;c:\python25\lib\urllib.py&quot;, line 844, in __init__</div><div>    self.init()</div><div>  File &quot;c:\python25\lib\urllib.py&quot;, line 850, in init</div><div>    self.ftp.connect(self.host, self.port)</div>
<div>  File &quot;c:\python25\lib\ftplib.py&quot;, line 129, in connect</div><div>    raise socket.error, msg</div><div>IOError: [Errno ftp error] (10060, &#39;Operation timed out&#39;)</div></div><div>&gt;&gt;&gt; f =urllib.urlopen(&#39;file://<a href="http://127.0.0.1/foo.txt">127.0.0.1/foo.txt</a>&#39;)</div>
<div>Traceback (most recent call last):</div><div>  File &quot;&lt;stdin&gt;&quot;, line 1, in &lt;module&gt;</div><div>  File &quot;c:\python25\lib\urllib.py&quot;, line 82, in urlopen</div><div>    return opener.open(url)</div>
<div>  File &quot;c:\python25\lib\urllib.py&quot;, line 190, in open</div><div>    return getattr(self, name)(url)</div><div>  File &quot;c:\python25\lib\urllib.py&quot;, line 457, in open_file</div><div>    return self.open_ftp(url)</div>
<div>  File &quot;c:\python25\lib\urllib.py&quot;, line 538, in open_ftp</div><div>    ftpwrapper(user, passwd, host, port, dirs)</div><div>  File &quot;c:\python25\lib\urllib.py&quot;, line 844, in __init__</div><div>    self.init()</div>
<div>  File &quot;c:\python25\lib\urllib.py&quot;, line 850, in init</div><div>    self.ftp.connect(self.host, self.port)</div><div>  File &quot;c:\python25\lib\ftplib.py&quot;, line 129, in connect</div><div>    raise socket.error, msg</div>
<div>IOError: [Errno ftp error] (10061, &#39;Connection refused&#39;)</div>-- <br>Tim Lesher &lt;<a href="mailto:tlesher@gmail.com">tlesher@gmail.com</a>&gt;<br>