Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I get the last-modified time with python3 urllib?

I'm porting over a program of mine from python2 to python3, and I'm hitting the following error: AttributeError: 'HTTPMessage' object has no attribute 'getdate'

Here's the code:

conn = urllib.request.urlopen(fileslist, timeout=30)
last_modified = conn.info().getdate('last-modified')

This section worked under python 2.7, and so far I haven't been able to find out the correct method to get this information in python 3.1.

The full context is an update method. It pulls new files from a server down to its local database, but only if the file on the server is newer than the local file. If there's a smarter way to achieve this functionality than just comparing local and remote file timestamps, then I'm open to that as well.

like image 905
Daenyth Avatar asked Feb 16 '11 21:02

Daenyth


People also ask

What does Urllib mean in Python?

Urllib package is the URL handling module for python. It is used to fetch URLs (Uniform Resource Locators). It uses the urlopen function and is able to fetch URLs using a variety of different protocols. Urllib is a package that collects several modules for working with URLs, such as: urllib.

Which is better Urllib or requests?

2) urllib provides the urlencode method which is used for the generation of GET query strings, urllib2 doesn't have such a function. This is one of the reasons why urllib is often used along with urllib2. Requests - Requests' is a simple, easy-to-use HTTP library written in Python.

What does Urlopen return?

The data returned by urlopen() or urlretrieve() is the raw data returned by the server. This may be binary data (such as an image), plain text or (for example) HTML. The HTTP protocol provides type information in the reply header, which can be inspected by looking at the Content-Type header.


1 Answers

conn.headers['last-modified'] works under both Python 2 and Python 3. Comparing filestamps seems reasonable to me.

like image 187
Lennart Regebro Avatar answered Oct 04 '22 03:10

Lennart Regebro