python常用库记录

PIL

PIL能处理的图片类型

1
2
3
4
5
6
7
8
9
10
模式
1 1位像素,黑和白,存成8位的像素
L 8位像素,黑白
P 8位像素,使用调色板映射到任何其他模式
RGB 3×8位像素,真彩
RGBA 4×8位像素,真彩+透明通道
CMYK 4×8位像素,颜色隔离
YCbCr 3×8位像素,彩色视频格式
I 32位整型像素
F 32位浮点型像素

git使用指南

filter-branch

帮助信息:git filter-branch –help

用于删除仓库内的大文件

例:

1
git filter-branch --tree-filter 'rm -f data/new_vcwe/corpus.pkl' --tag-name-filter cat -- --all

遍历所有的commit,删除那个文件,重写历史commit,然后强行远程推送

1
git push origin --all --force

构建docker镜像

1. 使用Dockerfile文件

创建一个示例仓库:

1
2
3
mkdir static_web
cd static_web
touch Dockerfile

这个目录是构建环境,docker称此环境为上下文。

Dockerfile 简介

文件内容如下:

1
2
3
4
5
6
7
# Version: 0.0.1                                                                                                                                                                   FROM ubuntu:20.04
MAINTAINER LI RANRAN "lrr19960429@163.com"
RUN apt-get update && apt-get install -y nginx
RUN echo 'Hi, I am in your container' \
> /usr/share/nginx/html/index.html
EXPOSE 80

运行Dockerfile

1
$ docker build -t="lrr01/static_web" .

运行成功如下所示:

image-20210702205928808

在构建时为镜像设置标签

使用方法为“镜像名:标签”

1
docker build -t="lrr01/static_web:v1" .

命令中的. 是告诉Docker在当前目录去找Dockerfile文件,也可以指定git仓库的地址来指定Dockerfile的位置。

docker build的过程中,会将构建上下文传到Docker守护进程,如下所示。

image-20210702210724151

如在上下文的根目录存在.dockerignore文件,则将按行读取该文件,其内容用于设置哪些文件不会被当作构建下文的一部分,可以防止其上传到docker守护进程中。

Dockerfile和构建缓存

注意到每一步的构建过程都会将结果提交为镜像,并有一个镜像ID,如a92d18546651。docker会将每一步的镜像看为缓存,若第5步构建发生错误时,会直接从第4步开始。当之前的构建步骤没有变化时,可以节省时间。如在第1步到第3步之间做了修改,Docker会从有变化的指令开始。

若,确保构建过程不会使用缓存,可以使用docker build--no-cache参数。

1
docker build --no-cache -t="lrr01/static_web:v1" .

查看新镜像

使用 docker images 命令来查看新构建的镜像。

image-20210702212405867

使用docker history,可以查看镜像是如何构建出来的,如下所示:

1
docker history 7682ea492fec

image-20210702212746968

从新镜像启动容器

1
docker run -d -p 80 --name static_web lrr01/static_web nginx -g "daemon off;"

image-20210702213357644

使用 docker run 命令,用 刚才构建的镜像的名字,启动一个名为 static_web 的新容器。

-d选项,告诉docker以分离(detached)的方式在后台运行,比较适合运行类似Nginx守护进程这样的需要长时间运行的进程。

也指定了需要在容器中运行的命令:nginx -g "daemon off;"。这将以前台运行的方式启动Nginx,作为web服务器。

-p 用来控制Docker在运行时应该公开哪些网络端口给外部。运行容器时,Docker可以通过两种方式来在宿主机上分配端口

  • Docker在宿主机上随机选择一个32768~61000之间的端口来映射到容器的80端口
  • 在Docker宿主机中指定具体的端口号来映射到容器的80端口

docker run 命令将在docker宿主机上随机打开一个端口,这个端口会连接到容器中的80端口。

使用docker ps查看容器端口分配情况:

image-20210702214101523

可以看到容器中的80端口,被映射到宿主机的49153端口。

也可以通过docker port 容器ID/容器名 来查看容器的端口映射情况:

image-20210702214251569

通过-p选项映射到特定的端口

-p 80:80:会将容器内的80端口绑定到本地宿主机的80端口

-p 127.0.0.1:80:80:将容器内的80端口绑定到本地宿主机的127.0.0.1这个IP的80端口。我们也可以将容器内的80端口绑定到一个宿主机的随机端口上

docker run -d -p 80:80 --name static_web lrr01/static_web nginx -g "daemon off;"

通过-P参数对外公开端口

其可以公开在Dockerfile中通过EXPOSE指令公开的所有端口

1
docker run -d -P --name static_web lrr01/static_web nginx -g "daemon off;"

其会将容器内的80端口对本地宿主机公开,并且绑定到宿主机的一个随机端口上。

有了这个端口号,就可以使用本地宿主机的IP地址的IP地址或者127.0.0.1的localhost,查看Web服务器的内容。

2. 使用commit

创建一个要进行修改的容器

1
docker run -t -i ufoym/deepo:pytorch-py36-cu100 /bin/bash

安装pqi pip换源工具

1
pip install pqi

如何使用 百度pip pqi

安装指定版本pytorch

1
pip install torch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0

markdown页内跳转

1
2
3
4
5
6
7
1. 先定义一个锚(id)

<span id="jump">Hello World</span>

2. 然后使用markdown的语法:

[XXXX](#jump)

JupyterNotebook使用anaconda环境

  1. 首先,激活anaconda虚拟环境。
    激活环境
  2. 在该环境中安装ipykernel,pip或者conda都可以。
  3. 执行以下命令
    1
    python -m ipykernel install --user --name=paddle-cpu#那个环境的名字
  4. 在jupyter中查看
    结果

anaconda使用指南

创建新环境

conda create --name <env_name> <package_names>

  • 注意

    • env_name,即创建的环境名

    • package_names,即安装在环境中的包名。

      1. 如果要安装指定的版本号,则只需要在包名后面以=和版本号的形式的执行。如:conda create --name python2 python=2.7,即创建一个名为“python2”的环境,环境中安装版本为2.7的python。
      2. 如果需要在新创建的环境中创建多个包,则直接在后以空格隔开,添加多个包名即可。如:conda create -n python3 python=3.5 numpy pandas,即创建一个名为“python3”的环境,环境中安装版本为3.5的python,同时也安装了numpy和pandas。
    • --name可以替换为-n


切换环境

针对Ubuntu18.04 conda4.6.14,命令为

1
conda activate <env_name>

退出环境

1
conda deactivate

显示已创建环境

1
conda info --envs

1
conda info -e

1
conda env list

获取当前环境中已安装的包信息

1
conda list

新的Anaconda会在终端中自动进入虚拟环境,使用以下命令即可解决

1
conda config --set auto_activate_base false

删除已安装的虚拟环境

1
2
conda env remove -n env_name

linux命令记录

sed命令

直接编辑文件选项-i,会匹配file文件中每一行的第一个book替换为books:

1
sed -i 's/book/books/g' file

vim替换

替换当前行:
:s/foo/bar/g
全文:
:%s/foo/bar/g

vim打开折叠

:zc折叠,只折叠最外层的折叠
:zC对所在范围内所有嵌套的折叠点进行折叠,包括嵌套的所有折叠
:zo展开折叠,只展开最外层的折叠
:zO对所在范围内所有嵌套的折叠点展开,包括嵌套折叠
:[z到当前打开的折叠的开始处
:]z到当前打开的折叠的末尾处

vim查找

查找字符串super
:/super或者:?super
两者的区别是前者从上往下搜索,后者是从下往上搜索
并且可以通过 n 或 N 进行上一个或下一个的匹配

vim消除搜索后的关键字高亮

输入:noh

压缩与解压

.tar.gz文件

压缩

1
tar -zcvf FileName.tar.gz DirName       # 将DirName和其下所有文件(夹)压缩

解压

1
tar -zxvf FileName.tar.gz               # 解压

解压到指定路径

1
tar -C DesDirName -zxvf FileName.tar.gz # 解压到目标路径

.tar文件

打包

仅打包,并非压缩

1
tar -cvf FileName.tar DirName # 将DirName和其下所有文件(夹)打包

解包

1
tar -xvf FileName.tar         # 解包

shell脚本接受命令行参数

1
2
3
# test.sh

ls $1

$1:是第一个参数

$0:是文件本身

结果:

image-20210725095824865

du查看文件或文件夹的大小

1
du -h --max-depth=1

如果当前目录下文件和文件夹很多,使用不带参数的du命令,可以循环列出当前目录下所有文件和文件夹所使用的空间。文件多时就会很乱,可以使用参数--max-depth=指定深入目录的层数;

使用du -h --max-depth=0命令,可以查看当前目录已使用的总空间大小及当前目录已使用的总空间大小;

使用du -h --max-depth=1命令,可以查看当前目录已使用的总空间大小及当前目录下一级文件和文件夹各自使用的总空间大小。

查看端口号

1
netstat -apn

查看网络状态,a 是 all ,p 显示程序, n是显示程序对应的端口号

使用管道操作符可以查找端口号

1
netstat -apn | grep 8080

查看进程信息

1
ps -aux

杀死进程

1
kill -9 3306 // 强制杀掉进程号3306

查找文件中的字符串

1
grep -e "fuck" text.txt

查看文件

1
find ./ -name test.txt // 在当前目录下查找名称带有text.txt的文件

awk命令

pass

添加用户

1
sudo adduser username

然后按提示操作。

添加root权限

1
sudo vim /etc/sudoers

修改如下文件:

1
2
3
# User privilege specification
root ALL=(ALL:ALL) ALL
lrr ALL=(ALL:ALL) ALL

ubuntu使用shadowsocks

1
$sudo apt-get install privoxy

安装完后进行配置,其配置文件在/etc/privoxy/config
找到# forward-socks5t / 127.0.0.1:9050 .
把它改成 forward-socks5 / 127.0.0.1:1080 .
并且删掉前面的#注释,中间的t和结尾的9050改成1080
1.png
配置完成,重启privoxy:

1
$sudo /etc/init.d/privoxy restart

随后进入系统设置 -> 网络 -> 网络代理 -> 方法:手动 -> HTTP代理:127.0.0.1 8118
修改完成后点击应用到整个系统即可。
2.png