鳕鱼天空

This is Mr Wang's Tech Blog.

【转】 python3关于urllib中urlopen报错问题的解决

00x0 前言

   最近更新了python版本,准备写个爬虫,意外的发现urllib库中属性不存在urlopen,于是各种google,然后总结一下给出解决方案

  

00x1 问题的出现

   AttributeError: 'module' object has no attribute 'urlopen'

00x2 问题的解决途径

    我们先来看下官方文档的解释:

  1. a new urllib package was created. It consists of code from  
  2. urllib, urllib2, urlparse, and robotparser. The old  
  3. modules have all been removed. The new package has five submodules:  
  4. urllib.parse, urllib.request, urllib.response,  
  5. urllib.error, and urllib.robotparser. The  
  6. urllib.request.urlopen() function uses the url opener from  
  7. urllib2. (Note that the unittests have not been renamed for the  
  8. beta, but they will be renamed in the future.)  


  也就是说官方3.0版本已经把urllib2,urlparse等五个模块都并入了urllib,也就是整合了。

00x3 正确的使用方法

  1. import urllib.request  
  2. url="http://www.baidu.com"  
  3. get=urllib.request.urlopen(url).read()  
  4. print(get)  

 

  
其实也是可以换个utf-8的编码让读取出来的源码更正确的,但这已经是番外的不再提了。

 

 

转自:https://blog.csdn.net/pythonniu/article/details/51855035

Microbit 提高篇:创建自己的软件包(Building your own package)[施工中]

%&%¥#……这里其实要装好几个软件,也可以先都下载完再来看教程,所以先给出本教程需要用到的下载链接,测试你网速和耐心的时候到了

【------这里开始是下载链接------】

node.js 推荐使用推荐版本:){下载,安装}

Yotta 自己去下载最新版本的安装(Download the latest yotta windows installer.){下载,安装}

SRecord 1.64 这个是个zip压缩包,下载完后需要解压到 c:\SRecord {下载,解压}

Visual Studio 开发工具,推荐使用 Visual Studio Code,小巧且免费  {下载,安装}

【------下载链接到这里为止了------】

你以为准备工作就这样结束了吗,你如果没有github的账号,还需要注册一个...

入门级:GitHub和Git超超超详细使用教程!

请按照第一步注册一个github的账号,并按照第二步创建一个应用,然后可以回来正式的,安心的看下面的教程了

 

步骤0:安装本地PXT服务器

为了在本地创建和调试软件包,你需要先安装PXT,以下是详细步骤(setting up a workspace):

1、安装命令行工具(Command Line Tool)

1.1 要安装PXT,需要先安装node.js. 然后就可以通过npm命令来安装PXT了

访问 https://nodejs.org/zh-cn/,安装推荐或最新版本的node.js,然后通过命令行安装pxt

npm install -g pxt

 

1.2 如果需要在本地开发 pxt-microbit 软件包(不是为了这个干什么费上面那么大劲,如果你无视了上面的下载安装步骤,要明白出来混迟早要还的),需要安装并配置一下工具

1.2.1 自己去下载最新版本的Yotta 安装

1.2.2 SRecord 1.64 这个是个zip压缩包,下载完后需要解压到 c:\SRecord 

1.2.3 安装Visual Studio 开发工具,推荐使用 Visual Studio Code

1.2.4 配置系统环境变量 在PATH中添加

C:\Python27\Scripts;C:\srecord

2、配置Microbit开发环境

打开命令行,在硬盘里找个你喜欢的地方,创建一个microbit的开发环境

md microbit
cd microbit
pxt target microbit
pxt serve

额,最后一行会在本地默认浏览器打开一个makecode的编辑器,似不似很腻害

下次,你只需要运行第四句就好了,直接打开一个本地编辑器,也可以运行  npm update 更新PXT

3、配置Microbit开发环境

pxt install, which will install all required PXT packages

 

具体开发步骤请参考:

Simple package tutorial

 

关于自定义图标的显示,仔细看下面这段可以少走很多弯路

1、去图标网站fontawesome下载免费的图标字体,下回来有3个,试了下应该是装“Font Awesome 5 Free-Solid-900.otf” 就行了

2、在同一个网站上找到你想要的图标,记住他的代码(4位数的16进制,点哪个i,可以显示),并转换成10进制记下来。

3、本地打开一个编辑器,比如WORD,换成刚才装的“Font Awesome 5 Free-Solid-900.otf”,打开小键盘数字输入,按住ALT键输入刚才的转换出来的10进制代码,如果步骤没有错的话,就可以看到你想要的那个图案了

4、选中那个图案,复制,然后粘贴到软件包的那个icon里就行了。

 

 

开发调试完以后就可以发布了,下面的步骤亲测可行

GIT详细教程

以下为原文引用:

方案二 : 方案二就是不用关联GitHub仓库, 直接从GitHub冲克隆源码到本地, 项目根目录也不用创建;

-- 从GitHub上克隆项目到本地 :git clone git@github.com:han1202012/NDKHelloworld.git , 注意克隆的时候直接在仓库根目录即可, 不用再创建项目根目录 ;

-- 添加文件 :git add ./* , 将目录中所有文件添加;

-- 提交缓存 :git commit -m '提交';

-- 提交到远程GitHub仓库 : git push -u origin master ;

之后修改提交 : 

-- 与GitHub远程仓库同步 :git pull ;

-- 查看文件变更 : git status ;

-- 提交代码到本地缓存 : git commit -m 'description';

--提交代码到远程GitHub仓库 :git push ;

 

我的操作经验是:

先在github上建一个应用程序

然后拉回来,用pxt init初始化,接着在提交上传。

git clone 地址
pxt init
git add .
git commit -a -m "First Commit"
pxt bump

The pxt bump will make sure there are no uncommited changes, bump the version number, create a git tag, and push everything to github.

这里提示下,如果要添加依赖的软件包,修改完pxt.json后,可以执行以下 pxt install就好了

 

假如要删除一个git的release版本

git tag -d v1.1.1
git push origin :v1.1.1

 

不知道什么原因,pxt bump在我的台式机上运行总是有问题,分开一句句执行就行:

git pull

git status --porcelain --untracked-files=

git commit -a -m 1.1.0

git tag v1.1.0

git push --tags

上面的1.1.0可以改成你想要的版本,这样就发布到release里去了

 

发布软件包:

How do I get a package or my organisation approved?

额,要去google填个表单,然后会把项目合并到microbit,要真正的专用外设才行,所以我们自己做的通用软件包就自己用用也行,不发布也罢T T 

 

 

 

 

重置 winsock

火狐突然无法打开任何网站了,重装也无效,那么度娘后发现需要重置winsock

命令行如下:

netsh winsock reset

然后很多情况下不需要重启就已经解决了

microbit I2C方法pins的使用备忘(DS1307时钟模块)

Microbit支持I2C方法,而且一共只有两个方法,一个是读数字,一个是写数字。

用ds1307和ds3231两个时钟模块进行了测试。

ds3231可以在写入0地址后连续读取7位的时间信息,但ds1307读出的信息一直怪怪的,经过仔细观察,发现竟然是隔了一位读出来的,(应该是秒,分,时,这样,ds1307读出来竟然是秒,时,日),然后用了写一次地址读一个数字的方法,竟然对了。

讲道理i2c的读取每次指针加一的,那么也许是芯片自身的关系,或者pins模块本身的一些bug,导致读取ds1307寄存器的时候发生跳读的问题,应该是指针加了二,这个在以后使用中需要注意。

18/4/3 22:33分修订:读出来的数据一致有觉得不对的地方,又仔细回去研究了DS1307的手册,并仔细核对了读取的数据,发现原来秒的最高位为1了,而这个位是CH位,当为1的时候需要置零进行复位,然后时钟就正常了(变1的可能性是断电而且电池没电过了,恰巧这个模块由于生产时焊接的原因电池一直是无效的),然后,DS1307依然要读一个后写一次地址,总觉得自带的计数器加2了,过几天试试新的模块会不会没有这个问题。

引用:要注意的是,00h 地址的第7 位为器件时钟允许位(CH),由于在在开始上电时内部RAM内容随机,所以在初始化时将CH 位设零(时钟允许)是非常重要的。

http://www.elecfans.com/yuanqijian/yinjiaotu/20180126623670.html

引用:由于 DS1307 的方波输出脚为集电极开路,故要在外部加上上拉电阻! 要注意的是,00h 地址的第 7 位为器件时钟允许位(CH),此位为 1 则芯片未开始工作,即时钟未走时,所以在上电时单片机要先读出秒,并判断位 7(CH)是否为 1,如为 1 要把该位清零写入秒寄存器(地址为 0),并把其他的时间单元设定为默认值。 如果上电复位时读出的秒的最高位 CH 为 0,说明时钟已工作(前已对 CH 清 0,且停电 后有备用电池),此时不能重写时间单元!

https://wenku.baidu.com/view/18c0391803d8ce2f00662366.html

 

另外通过对库的研究,从方法回到了硬件本身的通讯认识,高低电平的变化对地址设置和对寄存器的读取就是通讯的本质,这个可以好好研究下,果然学习得深入些才能看到本质,有真正的收获。

清除win7的图标缓存

发现桌面的某几个应用程序的图标消失了,就试了试下面这个方法,把一下内容保存到记事本,改后缀为cmd,然后执行一下,就OK了。

 

rem 关闭Windows外壳程序explorer

taskkill /f /im explorer.exe

rem 清理系统图标缓存数据库

attrib -h -s -r "%userprofile%\AppData\Local\IconCache.db"

del /f "%userprofile%\AppData\Local\IconCache.db"

attrib /s /d -h -s -r "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\*"

del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_32.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_96.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_102.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_256.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_1024.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_idx.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_sr.db"

rem 清理 系统托盘记忆的图标

echo y|reg delete "HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v IconStreams
echo y|reg delete "HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v PastIconsStream

rem 重启Windows外壳程序explorer

start explorer