Cho một urllib.request
đối tượng tiêu chuẩn, lấy ra như vậy:urllib.request: bất kỳ cách nào để đọc từ nó mà không sửa đổi đối tượng yêu cầu?
req = urllib.urlopen('http://example.com')
Nếu tôi đọc nội dung của nó qua req.read()
, sau đó các đối tượng yêu cầu sẽ được bỏ trống.
Không giống như các đối tượng giống như tệp thông thường, tuy nhiên, đối tượng yêu cầu không có phương thức seek
, vì tôi chắc chắn là những lý do tuyệt vời.
Tuy nhiên, trong trường hợp của tôi, tôi có chức năng và tôi muốn xác định một yêu cầu nhất định và sau đó trả lại yêu cầu đó "không bị hấn" để có thể đọc lại.
Tôi hiểu rằng một tùy chọn là yêu cầu lại. Nhưng tôi muốn có thể tránh thực hiện nhiều yêu cầu HTTP cho cùng một url & nội dung.
Cách duy nhất khác mà tôi có thể nghĩ là có hàm trả về một bộ nội dung được trích xuất và đối tượng yêu cầu, với sự hiểu biết rằng bất cứ thứ gì gọi hàm này sẽ phải lấy nội dung theo cách này.
Đó có phải là lựa chọn duy nhất của tôi không?
Không sử dụng 'urllib.urlopen' - [* Cũng lưu ý rằng hàm urllib.urlopen() đã bị loại bỏ trong Python 3 có lợi cho urllib2.urlopen() *] (http: //docs.python. org/2/library/urllib.html) –
Cảm ơn bạn đã cho tôi biết, mặc dù trong trường hợp này, hành vi từ 'urllib2.urlopen' là như nhau. –