Discuss / Python / 关于import的问题

关于import的问题

Topic source

JoyDamn

#1 Created at ... [Delete] [Delete and Lock User]

我记得之前说的要尽量少用from import 多用import 所以我这次试用如下代码

import urllib
with urllib.request.urlopen('https://api.douban.com/v2/book/2129650') as f:
    data=f.read()
    print('Status',f.status,f.reason)
    for k,v in f.getheaders():
        print('{0}:{1}'.format(k,v))
    print('Data',data.decode('utf-8'))

结果报错

Traceback (most recent call last):
  File "C:\Users\focus\Desktop\python demos\urllibtest.py", line 2, in <module>
    with urllib.request.urlopen('https://api.douban.com/v2/book/2129650') as f:
AttributeError: module 'urllib' has no attribute 'request'
>>>

使用

import urllib.request
with urllib.request.urlopen('https://api.douban.com/v2/book/2129650') as f:
    data=f.read()
    print('Status',f.status,f.reason)
    for k,v in f.getheaders():
        print('{0}:{1}'.format(k,v))
    print('Data',data.decode('utf-8'))

或者

from urllib import request
with request.urlopen('https://api.douban.com/v2/book/2129650') as f:
    data=f.read()
    print('Status',f.status,f.reason)
    for k,v in f.getheaders():
        print('{0}:{1}'.format(k,v))
    print('Data',data.decode('utf-8'))

都没问题,想问问老师为什么会这样。。。

有问题,其实urllib并没有request这个模块

Nuomi1

#3 Created at ... [Delete] [Delete and Lock User]

urllib 只是一个文件夹,而不是目标文件。

楼主找到原因了吗 我也出现同样的错误信息…… 同样都是Python 3.5,win7下可以运行,没有错误信息。centos6.7下三种写法都是同样的错误提示AttributeError: module 'urllib' has no attribute 'request'

import urllib.request

Kungreye

#6 Created at ... [Delete] [Delete and Lock User]

@SylVanas语风

对于具体的某个URL, 感觉urllib.request.urlopen(URL)与urllib.request.urlopen(urllib.request.Request(URL))的结果相同。

但class urllib.request.Request的作用,是修改及复用时,更方便。

如 req = urllib.request.Request("http://wwww.example.com"),若有多处调用req时候,这样写更简便,修改亦同。

个人感觉,不知正确与否。


  • 1

Reply