python3导入urllib2_两种兼容Python2和Python3的导入库的方法

2023-10-29

Python3和Python2是不兼容的,但是由于一些历史遗留问题,比如一些服务器只安装有Python2,一些安装有Python3,所以我们在实际写代码的时候就不得不考虑兼容Python2和Python3了。

下面简单介绍两种兼容Python2和Python3的导入库的方法。

一:使用ImportError

以configparser为例。读写配置模块在Python2中是大写开头的的Configparser,在Python3中是小写的configparser,这就导致了读写配置的代码不能直接兼容Python2和Python3。我们需要做一些修改,利用ImportError,不管三七二十一,先导入一个版本,如果出现ImportError在切换到另外一个版本。不是configparser就是Configparser

# -*- coding: utf-8 -*-

try:

# Python3

from configparser import ConfigParser

except ImportError:

# Python2

from ConfigParser import ConfigParser

config = ConfigParser()

# do something

代码修改为下面的也可以,先导入Python2的版本,出错再导入Python3的版本。

# -*- coding: utf-8 -*-

try:

# Python2

from ConfigParser import ConfigParser

except ImportError:

# Python3

from configparser import ConfigParser

config = ConfigParser()

# do something

我们再举一个例子。

urllib库也是不兼容Python2和Python3的。废话少说,直接上代码:

# -*- coding: utf-8 -*-

try:

# Python2

from urllib import urlencode

from urllib import quote

from urlparse import urlparse

import urllib2 as request

except ImportError:

# Python3

from urllib.parse import urlencode

from urllib.parse import quote

from urllib.parse import urlparse

import urllib.request as request

# do something

二:根据版本来判断

根据sys.version_info.major来判断Python的版本,根据不同的版本导入不同的库。

# -*- coding: utf-8 -*-

import sys

if sys.version_info.major == 2:

# Python2

from urllib import urlencode

from urllib import quote

from urlparse import urlparse

import urllib2 as request

else:

# Python3

from urllib.parse import urlencode

from urllib.parse import quote

from urllib.parse import urlparse

import urllib.request as request

# do something

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python3导入urllib2_两种兼容Python2和Python3的导入库的方法 的相关文章

  • 【DeepL Write】AI润色

    DeepL Write 是著名的机器翻译工具 DeepL 最新发布的新功能 通过 检查语法及标点错误 重新表述句子 运用精确措辞 并为你的文本选择最恰当的语气 目前支持英文 德语 使用 DeepL Write 完善你的写作 这是一款通过 A
  • C/C++中命令行参数和头文件选择规范问题

    1 命令行参数 在图形界面普及之前都使用命令行界面 DOS和UNIX就是例子 Linux终端提供类UNIX命令行环境 命令行 command line 是指在命令行环境中 用户为运行程序输入命令的行 假设有一个名为csdn exe的可执行文
  • .NET/C#中使用Redis

    一 简介 在C 中使用Redis 一般有两种方式 1 ServiceStack Redis 据说是Redis官方推荐使用的驱动类库 但是是收费的 2 StackExchange Redis 可能性能要比ServiceStack Redis差
  • uni-app开发ios App,如何去掉底部安全空白区域

    在ios开发的过程当中 在ios设备上底部会出现一个安全空白区域 如果想要去掉 在manifest json中点开源码视图配置 将所有 iPhone X 刘海屏 底部安全区域背景颜色 自动适应 当前页面什么颜色会自动调整 代码 将所有 iP
  • COMP 9417 T2_2021 Lesson 6

    Pg1 54 逻辑回归和感知机的区别主要是多了一个求概率 逻辑回归的损失函数由最大似然推导而来 使预测概率分布与真实概率分布接近 感知机的损失函数可能有多种方法 可能有多层感知机 但他们本质的思想都是使预测的结果与真实结果误差更小 是函数拟
  • 解决sass的GBK and UTF-8问题

    问题 在ruby命令窗口sass watch global scss global css会报错 且生成的css文件中文注释是乱码的 根据提示是编码问题 gt gt gt Sass is watching for changes Press
  • 无线网开机不能用显示红色叉号

    操作系统不能上无线网络 一般是先检查无线网卡驱动程序是否正常 然后检查无线服务是否开启 用操作系统中自带网络诊断之后 显示此计算机上没有运行的windows无线服务 开始 运行 输入 services msc 点击确定 或按下回车键 Ent
  • elementUI switch 内部显示文字

    只需要加入一些css即可 deep el switch core before content 高 position absolute top 0 right 5px color fff is checked deep el switch
  • Swift语法学习--扩展与泛型

    文章目录 扩展 扩展定义 对方法进行扩展 通过扩展判断数组是否相同 泛型 使用泛型进行数组合并 使用泛型进行任意类型数组元素调换 扩展 扩展定义 对方法进行扩展 通过扩展判断数组是否相同 泛型 使用泛型进行数组合并 使用泛型进行任意类型数组
  • 点击链接重定向跳转微信公众号关注页、微信关注链接

    1 先获取你要设置的公众号的biz a 电脑进入公众号 点击右上角的 菜单 b 点击出现公众号的简介页面 再点击页面下面三个按钮中间的按钮 c 点击复制链接获取biz 例如 http mp weixin qq com mp getmasss
  • latex编辑器别把一整段放到一行里面

    如果是Winedit的话 ctrl W就行 其实就是设置自动换行
  • 【JavaSe】面向对象篇(十四) 异常

    JavaSe 面向对象篇 十四 异常 1 异常 1 1 异常概念 异常 就是不正常的意思 在生活中 医生说 你的身体某个部位有异常 该部位和正常相比有点不同 该部位的功能将受影响 在程序中的意思就是 异常 指的是程序在执行过程中 出现的非正
  • postgresql 连接超时_Postgre SQL连接服务器失败原因分析及解决方法

    首先这是登陆postgre sql时提示的错误信息 psql 无法联接到服务器 Connection refused 0x0000274D 10061 服务器是否在主机 localhost 1 上运行并且准备接受在端口 5432 上的 TC
  • 机器学习前沿热点–Deep Learning

    一Deep Learning的前世今生 二Deep Learning的基本思想和方法 三深度学习Deep Learning算法简介 不充分的深度是有害的 大脑有一个深度架构 认知过程看起来是深度的 四拓展学习推荐 五应用实例 六参考链接 深
  • windows server 2012 R2 远程桌面设置中仅允许运行使用网络级别选项灰色

    服务器远程开在外网 装完系统 仅允许使用网络级别身份验证的选项 状态为 灰色未勾选 一段时间之后 很多登录失败 占满内存 只能重启系统 开放外网的远程桌面 未输入凭据 直接到锁屏注销界面登录 致使大量未知用户错误登录 占满系统内存 都属于同
  • 面向前端的webview知识总结

    webview 本篇文主要面向前端同学食用 分别从简介 内核 组件 基本配置 加载 缓存机制 通信等几个方向列举安卓和iOS有关 webview 的知识点 希望前端在和客户端同学对接时不会太懵逼 简介 webview 是一个可以加载网页的可
  • 3.ESP32-S2 USB 挂载SPI-SD,当作U盘使用,无线U盘

    使用的 IDF 4 4 C语言开发 1 ESP32 S2 USB烧录 输出日志 2 ESP32 S2 USB 挂载内部Flash 当作U盘使用 无线U盘 3 ESP32 S2 USB 挂载SPI SD 当作U盘使用 无线U盘 4 ESP32
  • 欧拉函数模板

    欧拉函数 n varphi n n 表示 1 n
  • libvirt 报错

    执行virsh命令出现 下面的错误 error failed to connect to the hypervisor error no valid connection error Failed to connect socket to

随机推荐

  • Nginx 学习笔记01

    Nginx 学习笔记01 概念 Nginx是lgor Sysoev为俄罗斯访问量第二的rambler ru站点设计开发的 从2004年发布至今 凭借开源的力量 已经接近成熟与完善 Nginx功能丰富 可作为HTTP服务器 也可作为反向代理服
  • 打不到VarAsType的解决办法

    在uses单元加入Variants VarType function from Variants unit in Delphi 7 In Delphi 5 VarType function is declared in Systems un
  • 【Verilog基础】7.计数器

    4位计数器 module count4 out reset clk output 3 0 out input reset clk reg 3 0 out always posedge clk begin if reset out lt 0
  • SQL之子查询

    1 案例 案例1 OrderItems表示订单商品表 含有字段订单号 order num 订单价格 item price Orders表代表订单信息表 含有顾客id cust id和订单号 order num OrderItems表 ord
  • matlab 获取向量长度,matlab 获取矩阵和向量长度 length 和 size

    matlab 获取矩阵和向量长度 length 和 size 觉得有用的话 欢迎一起讨论相互学习 概论 size 获取数组的行数和列数 length 数组长度 即行数或列数中的较大值 numel 元素总数 size s size A 当只有
  • 浅谈智能还书车

    智能还书车是一种新型的智能化设备 配备触摸显示屏或简单操作的人机交流界面 图形界面 通过协议或其他网络及专用接口与图书馆自动化系统数据相连接 由读者自行对图书进行快速归还 读者把图书放到书车上 系统自动对图书进行归还操作 无须读者再做其他操
  • postgresql查询锁表pid,SQL、开始时间、执行SQL的ip地址

    SELECT distinct pg stat get backend pid S backendid AS pid pg stat get backend activity start S backendid AS start time
  • Spring Boot 框架介绍和使用

    本文参考自Spring Boot文档 Spring Boot 简介 Spring框架功能很强大 但是就算是一个很简单的项目 我们也要配置很多东西 因此就有了Spring Boot框架 它的作用很简单 就是帮我们自动配置 Spring Boo
  • SpringBoot整合MyBatisPlus显示隐藏打印sql语句日志

    显示 configuration log impl org apache ibatis logging stdout StdOutImpl 不显示 configuration log impl org apache ibatis loggi
  • QueryWrapper多表联查分页、IPage分页(解决IPage+ QueryWrapper 多表联查、条件搜素、模糊匹配的分页问题)

    QueryWrapper多表联查分页 IPage分页 解决IPage QueryWrapper 多表联查 条件搜素 模糊匹配的分页问题 实体类 controller service Impl 重写的mapper xml 最终sql Quer
  • 在shopify中如何使用JavaScript结合开发文档实现不加入购物车直接进入订单支付环节呢?

    今天有一个shopify修改的需求 在shopify中如何使用JavaScript结合开发文档实现不加入购物车直接进入订单支付环节 通过查看开发文档和尝试 发现可以实现 获取到商品信息 然后通过 cart create js接口提交订单 然
  • Matlab学习笔记 奇异值、奇异矩阵、svd函数

    奇异值 奇异值分解法是线性代数中一种重要的矩阵分解法 在信号处理 统计学等领域有重要应用 定义 设A为m n阶矩阵 A 表示A的转置矩阵 A A的n个特征值的非负平方根叫作A的奇异值 记为 i A 如果把A A的特征值记为 i A A 则
  • 前端学习资料汇总

    前端工具 can i see http caniuse com 一个查看css及html5在各个浏览器及手机端的支持情况 前端视野 平时可以多看看的网站了解下最新资讯 前端观察站 腾讯的前端技术 挺有含金量 html5 中国 http ww
  • C++模板实现队列

    我准备练习一下模板的知识 然后自己实现vector类 在这之前 先用模板实现一个队列来热身吧 队列的底层是链表 主要是熟悉一下模板的写法 另外 就是模板的定义和实现都要写在一个文件中 export关键字可以避免这样 还没用过 所以倒数第二行
  • cv2.threshold() 进行简单的图像分割,构建Mask

    cv2 thresholding构建Mask 1 T threshImage cv2 threshold src thresh maxval type 2 效果图 3 构建Mask 4 源码 4 1 自制渐变色原始图 4 2 磁盘已存在图片
  • CSAPP(第三版)第二章答案

    2 30 补码发生溢出返回0 否则返回1 int tadd ok int x int y int sum x y if x gt 0 y gt 0 sum lt 0 x lt 0 y lt 0 sum gt 0 return 0 else
  • 图像质量评价Code和Dataset

    图像质量评价Code和Dataset Research on Image Quality Assessment Lin Zhang School of Software Engineering Tongji University Lei Z
  • Android OpenGL ES(五):GLSurfaceView

    Android OpenGL ES 五 GLSurfaceView 分类 Android OpenGL ES基础 2012 02 27 16 56 3365人阅读 评论 0 收藏 举报 android null thread interfa
  • Godot 4 应用 - 图形绘制

    花了两天时间 做了一个初步的图形软件效果 先占个坑 以后再叙
  • python3导入urllib2_两种兼容Python2和Python3的导入库的方法

    Python3和Python2是不兼容的 但是由于一些历史遗留问题 比如一些服务器只安装有Python2 一些安装有Python3 所以我们在实际写代码的时候就不得不考虑兼容Python2和Python3了 下面简单介绍两种兼容Python