- 爬虫友好?
- python中%d
- 如何让终端能直接运行.py文件
- 目前的情况:
- 如何让屏幕不再一行行往下刷,而是在原有文字上改变?
- 数字有点小,如何能大一点?
- tty、终端、shell都是什么?
- vim中的
:%!xxd
是什么意思? - 转义总结:
- 不同进制如何表示,互相之间如何转化?
- 为什么是
\
是反斜杠,/
是斜杠,而不是反过来? - 还有哪些转义用法?有关
\33
的转义 - 重新梳理概念
- 看起来,常见的符号’♠❤♦♣‘都有自己的序号
- 关于unicode
- pack、encode都是编码,unpack、nuicode都是解码
- 终端中常用的命令
- 在python_file中的子文件夹中新建的.py文件,又不能直接运行了(需要输入python3)
- 如何在macOS终端中使用tree命令?
- https://www.cnblogs.com/cc1127/p/f3b7aa81b8deab51187958fc6a00e2c7.html">终端中的
cat
命令;参考https://www.cnblogs.com/cc1127/p/f3b7aa81b8deab51187958fc6a00e2c7.html - postgresql
- 使用git进行版本控制
- Python是动态类型的语言
- 不同类型的数据是如何储存的?
- eval是一个功能强大的函数
- 什么是补码系统?
- 如何整除?
- struct是什么命令?
- 有理数和无理数
- python中的数值
- python打开文件工作流程
- 什么叫序列化?反序列化?
- https://www.runoob.com/linux/linux-comm-ls.html">ls命令详解https://www.runoob.com/linux/linux-comm-ls.html
- sys.argv的用法
- 安装tmux
- what is self?
- 列表的
extend()
和append()
- 列表的赋值、潜拷贝、深拷贝
- 如何实现字符串倒序?
- 如何输出倒数索引
- 容器总结:
- 常用单词
- break与continue的区别:
- 安装nginx
- https://docs.python.org/zh-cn/3/">python帮助文档:https://docs.python.org/zh-cn/3/
爬虫友好?
访问官网的
官网/robots.txt
目的:通过使用
%
实现格式化字符串的目的用法1:通过在
%
和字母
之间插入数字,表示最大场宽,场宽代表格式化输出字符的宽度
尝试直接输入文件名
提升权限:
#查询sleep.py
ls -lah sleep.py
#修改权限
sudo chmod u+x sleep.py
#再次查询sleep.py
ls -lah sleep.py
注意变化,“-rw-r”变成了“-rwxr”
- “-”就是没有权限
- “x”就是excute权限
- sudo chmod u+x sleep.py
- chmod就是change+mod,改变状态位mode bits
- u+x
- user当前用户组
- +x增加excute权限
- sleep.py
- 修改对象文件的名称
- 再尝试
- 可还是需要输入文件位置“./”
- 可不可以不输入位置,直接输入文件名?
- 为什么ls命令就可以直接执行,不用输入ls的所在位置?
- ls在哪?看看:
- 在/usr/bin
- 查看当前环境变量,发现/usr/bin在环境变量中
- 可以通过PATH=$PATH:添加临时环境变量:
- 路径在环境变量里就可以执行!!!不在环境变量里,ls都不能执行!!
- 所以,python3能直接在终端里执行,因为python3的路径在环境变量里
- 所以,只要把sleep.py和python3放在同一个路径里,就可以直接执行
如何放入路径呢?
#把文件拷贝过去
cp sleep.py /usr/bin
#用管理员权限给考过去
sudo cp ./sleep.py /usr/bin
#尝试执行
sleep.py
#为当前用户增加可执行权限
chmod u+x /usr/bin/sleep.py
#使用管理员权限提权
sudo chmod u+x /usr/bin/sleep.py
#尝试执行
sleep.py
#尝试用管理员执行
sudo sleep.py
尝试,权限不够
- 用管理员权限,还是不行:
- 搜索解决办法:
- 一通操作后,还是不行,提示错误变成了:read-only file system
- 怎么办,继续搜索,又看到了一种方法,试试:
- 还是不行,command not found:
- 在知乎上看到感觉很靠谱的答案,但还是卡在mount command not found
https://www.zhihu.com/question/403361335
目前的情况:
- 输入路径、不输入python3(./sleep.py):可以执行
- 直接输入文件名称(即使已经进入文件所在目录):不可以执行(-bash: sleep.py: command not found)
- 问题:如何让终端自动搜索目录下符合名称的py文件并执行?
- 应该把文件所在的目录加进环境变量,macOS如何添加环境变量?
- 搜索:
- https://www.cnblogs.com/may18/p/12466139.html
- 按上面的操作,将文件所在的目录添加进路径再尝试:
- 成功:
source ~/.bash_profile
是什么意思?-
如何让屏幕不再一行行往下刷,而是在原有文字上改变?
用“\r”
- 先看看
\r
是什么效果: - 再根据
\r
的作用,修改sleep.py
-
数字有点小,如何能大一点?
用figlet,但是在macOS终端安装不成功,暂时跳过未解决
tty、终端、shell都是什么?
用终端login,会显示
ttys001
,什么意思?- tty是
teletyperwriter
的缩写,中文名是电传打印机
,是位于终端的原始电脑连接硬件
- terminal,终端, 电脑连线结束的端点
- shell,终端硬件基础上的软件壳子
-
vim中的
:%!xxd
是什么意思? :
表示命令%
表示所有行!
表示强制执行xxd
表示“以16进制显示一个文件”:%!xxd
连起来就是以16进制显示当前的文件
:%!xxd -r
是将十六进制还原为二进制-
转义总结:
\t,水平制符表,tab
- \n,回车
- \r,清空本行前面的内容
- \b,退回一格
- \v,效果同\f
-
不同进制如何表示,互相之间如何转化?
十进制
- 直接写:65
- int()
- decimal
- 没有前缀, 直接写数字
- 二进制
- 前缀0b,0表明这是一个数字,b表明这是一个二进制(binary)数字
- 0b1000001
- bin()
- binary
- 十六进制
- 前缀0x
- 0x41
- hex()
- hexadecimal
- 八进制
- 前缀0o
- 0o141
- oct()
- octal
ascii转化
slash 斜杠
- backslash 反斜杠
- 我们都是“右撇子”
- 砍或者挥鞭子的时候,一般是从右上到左下,也就是
/
- slash本身就有砍的意思
- 砍或者挥鞭子的时候,一般是从右上到左下,也就是
- 转义字符本身就有“逆向”、“反”的感觉
- 所以转译用反斜杠
\
-
还有哪些转义用法?有关
\33
的转义 - 试试\33[2J:
\33
是转移序列- 是
\033
的省略写法 - 是八进制形态
- 写成十六进制是
\xlb
- 是
- J是模式选择,清屏模式,分别代表:
- 0J - 从光标清到屏幕结束
- 1J - 从光标清到屏幕开头
- 2J - 整屏幕清
- 3J - 整屏幕清并选择清空滚动缓存
print("\33[1;1Hoeasy")
- H是选择模式
- 1;1指的是左上角,整个屏幕是80*24
- 设置好之后输出后面的
oeasy
可以设置颜色吗?
\
是转义字符\e
是转义序列\e
这个转义序列转移到escape的状态,正常的输入退出- 进入control sequence控制序列
- 控制序列的东西是不能直接输出的,而是用来控制位置、样式、颜色等
- 开始于CSI(Control Sequence Initiator)
\e
对应的ascii值是(033)8- 所以一般写作
\033[控制信息
- 各终端定制的标准各种各样,形成了各产品内部的标准
-
看起来,常见的符号’♠❤♦♣‘都有自己的序号
- 也可以对应的转义回去:
- 也可以用
\33[控制信息
给黑桃加上颜色:
\u
到底是什么意思?
- 看起来加上十六进制数,就可以找到对应的字符
- 和ascii码表有关吗?
- ascii:
来试试\u到底有哪些作用?
编码方式很多,
- 不同国家有不同的编码需求,因为不同国家的字符不同
- 所以衍生出了很多不同的编码方式
- 但是,如何能把所有的字符,用统一的编码方式表达呢?
- unicode就是用来解决这个问题的
- 随着字符的不断增加,被编码进unicode的内容也不断增加
- 整个编码区域分为若个block,新版本就是增加block中的字符
- “集装箱标准化”一旦开始,就会反过来约束新加入的人
- 如果你想加入集装箱行列,就需要先遵守已有的规则
- 已知汉字,得到unicode的过程,叫编码;反过来叫解码:
- 把str字符串编码(encode)成bytes字节序列
- 把bytes字节序列解码(decode)成str字符串
ascii()
得到字符串的编码状态,evla()
得到编码的字符串状态- 随着unicode的不断进化,数量逐渐增加,超过了65536(为什么限制是65536,65536=216)
- 导致2字节放不下(1字节=8比特,2字节=16比特,就能代表216种不同的组合)
- 那就要启用3字节吗?1字节是不是也能代表一部分内容?
-
pack、encode都是编码,unpack、nuicode都是解码
pack的对象是数字
- encode的对象是字符
终端中常用的命令
mkdir filename
在当前目录下新建filename文件夹vi -o i.py o.py
-o的意思是同时打开两个窗口,两个窗口分别是两个文件i.py和o.py~
代表当前用户的根目录,/Users/niuyinglei
pwd
显示当前所在路径
在python_file中的子文件夹中新建的.py文件,又不能直接运行了(需要输入python3)
- 把子文件夹路径加入
~/.bash_profile
source ~/.bash_profile
后尝试执行:- 无权限:
- 查询i.py的权限,并提升权限:
- 再次尝试,成功!
- 用同样的操作,提升另一个文件o.py的权限
如何在macOS终端中使用tree命令?
- macOS没有内置tree,需要额外安装
需要先安装管理tree的工具:homebrew
- 安装homebrew: https://brew.sh/index_zh-cn.html
- 好像因为被墙了 无法安装:
被墙了怎么安装?搜索:https://www.jianshu.com/p/f43fbacf910d
- 方案:替换本地hosts,就是ip地址;具体原理可以了解下dns域名解析
- 先查询真实IP:在https://www.ipaddress.com/查询raw.githubusercontent.com的真实IP
- 修改本地的ip地址:
sudo vim /etc/hsots
打开ip地址文件,将刚刚的ip和对应的网址粘贴进去,保存退出,这就算是完成了hosts的更新 - 能安装了吗?可以了~
- 但是好像又没完全安装,看起来还是网络连接问题:
- 一开始安装homebrew是为了使用tree,先试试能不能安装tree:
不行…
- homebrew安装成功了吗?
看来没有…
方案1失败,尝试另一个方案:https://blog.csdn.net/qq_35624642/article/details/79682979
有个评论,提供了更简单的方案,直接执行下列语句:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
能成功吗?看起来成功了,感谢大佬
- 使用brew安装tree,并使用
tree .
查看当前目录:终端中的
cat
命令;参考https://www.cnblogs.com/cc1127/p/f3b7aa81b8deab51187958fc6a00e2c7.html
- 安装homebrew: https://brew.sh/index_zh-cn.html
cat filename
一次性显示整个文件cat > filename
创建一个新文件,只能创建新文件,不能编辑已有文件cat file1 file2 > file
将几个文件合并为一个文件postgresql
安装与启动,参考:https://www.elliotblackburn.com/installing-postgresql-on-macos-osx/
- 初始化数据库:
initdb --locale=C -E UTF-8 /usr/local/var/postgres1
- 初始化成功后,提示:
You can now start the database server using:
pg_ctl -D /usr/local/var/postgres1 -l logfile start
- 用提示的语句:
pg_ctl -D /usr/local/var/postgres1 -l logfile start
,失败: - 用终端自己启动不成功,但是打开启动台的SQL shell成功打开了:
初始化数据库的参数介绍:
初始化
git init
- 把目前文件夹下的所有都备份
git add .
- 备份
git commit
- 遇到问题:
- 遇到问题:
git commit
后出现改动日志,应该怎么做才能commit?- 编辑日志,在最底行输入commit,保存退出?好像可以
- 编辑日志,在最底行输入commit,保存退出?好像可以
git checkout
ls
看图,已经回到了原来的文件结构
python3 -m pydoc filename
可以生成filename.py的帮助手册:python3 -m pydoc -w main
- 生成main.py的网页帮助文件
- 帮助文件的名称就是main.html
- 文件的注释描述会自动生成在文件的帮助文件中:
Python是动态类型的语言
- 动态类型,即类型是动态的
- 变量a,既可以是数字,也可以是字符串
- 数字和字符串这两种类型,在内存里的存在形式是不同的:
- 数字是转换成二进制形式,储存在内存中
- 字符串是把字符串中的每个字符的ascii值储存在内存中
- input获得的类型是字符串
不同类型的数据是如何储存的?
字符串的赋值过程:
什么是补码系统?
如何整除?
有理数和无理数
无理数是无限不循环小数,无法写成两个整数之比,rarional number
有理数包含有限小数和无限循环小数,irrational number
有理数和无理数统称为实数,Real
分子numberator,分母denominator
-47e-2
是-47×10-2
python打开文件工作流程
f = open("filename.***")
打开文件f.read()
读取文件f.close()
关闭文件;文件流打开后,python会一直留着文件流,如果只打开不关闭,内存会不够
什么叫序列化?反序列化?
序列化:我们把数据以字节流的方式储存在各个地方(内存、文件、数据库)
-
ls命令详解https://www.runoob.com/linux/linux-comm-ls.html
ls即
list files
- 直接
ls
,列出当前目录下的所有文件名称 ls -l
,除了文件名称,同时将文件形态等详细信息列出ls -a
,显示所有文件及目录
sys.argv的用法
- 是一个
从外部环境获取参数
的桥梁 - 从外部获取的参数可以是多个,即获得的参数是一个列表
- 即可以将
sys.argv
看做一个列表 - 那么就能通过
sys.argv[*]
来提取列表中的内容 sys.argv[0]
代表的是程序本身,如图:- 通过
:w|!python3 %
运行程序: - 得到文件本身名称
t.py
- 通过
sys.arg[1]
代表第一个参数,修改t.py为sys.arg[1]
,在命令行中输入python3 t.py 123
,得到在命令行中给到的第一个参数123:安装tmux
brew install tmux
安装-
what is self?
- 一般来说成员函数的第一个参数都是self
- 成员函数:类的定义中自带的函数
-
列表的
extend()
和append()
- extend是在现有列表尾部追加另个列表
-
列表的赋值、潜拷贝、深拷贝
浅拷贝:
- 整体上变量拥有自己的地址
- 但内部元素地址仍旧指向原地址
深拷贝
不支持
reverse
- 可以用
str[::-1]
切片来实现 -
如何输出倒数索引
-
容器总结:
序列:
- 字符串-不可变
- 元组-不可变
- 列表-可变
- 字节序列-不可变
- 集合类:
- set集合-可变
- frozenset冰封集合-不可变
- 字典类
- 字典dic-可变
- 总结: | 类型 | 是否可变 | 是否有序 | 举例 | 描述 | | —- | —- | —- | —- | —- | | 字符串 | 否 | 是 | ‘neo’ | string | | 元组 | 否 | 是 | (n,e,o) | tuple | | 列表 | 是 | 是 | [1,2,3][‘a’,’b’]list(1,2,3) | list | | 字节序列 | 否 | 是 | b’neo’ | bytes | | 集合 | 是 | 否 | {1,2,3,’neo’} | set 不可以以列表为元素 | | 不可变集合 | 否 | 否 | frozenset{[1,2,3]} | frozenset | | 字典 | 是 | 否 | {‘name’=’neo’,’age’=22} | dict |
常用单词
break与continue的区别:
- break:直接打断循环,即使下一个循环满足循环开始的条件
- 同时忽略后面的else语句
continue:忽略本轮循环后面的代码,重新开始新一轮的循环
参考https://blog.csdn.net/qq_29401881/article/details/116428241
- 终端直接运行
nginx
,出现错误:address already in use
,端口被占用,那就去修改端口- nginx的配置文件地址在:
/usr/local/etc/nginx
- 显示默认端口是8080,将其修改为80:
- 修改后再次执行nginx并访问localhost,正常
- 默认的根在哪?
/usr/local/var/www/index.html
参考:https://blog.csdn.net/xtkinglong/article/details/107317553?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0.pc_relevant_default&spm=1001.2101.3001.4242.1&utm_relevant_index=3
- 在自己的电脑上,为什么直接
localhost
不能访问?需要加上端口号即localhost:8080
才可以正常访问?:python帮助文档:https://docs.python.org/zh-cn/3/