吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1268|回复: 10
收起左侧

[学习记录] Linux浅学 + 测试浅学-python01、02

[复制链接]
jianghao331 发表于 2023-3-8 22:34
本帖最后由 侃遍天下无二人 于 2023-3-8 23:35 编辑

Linux浅学
  • linux概述
    • 是一个多用户多任务的网络操作系统。在服务器领域,市占率超过90%。
    • 操作系统
      • 桌面:Windows、mac os
      • 移动端:andriod、ios
      • 应用服务器:linux、windows service
      • 嵌入式、工业领域:Linux
    • Linux特点
      • 免费
      • 开源,开放源代码
      • 安全性,不容易遭受黑客攻击,基本上没有漏洞,有的话也能很快修复。
      • 稳定,比如7*24小时连续运行几年
    • Linux组成
      • 内核,就是操作系统最核心的代码
      • shell,壳的英文,用来跟操作系统内核进行交互的一种程序。shell有很多种,Linux默认的shell叫bash
      • 应用程序,操作系统之上,各种实现具体功能的程序。
      • 文件系统,文件的组织方式,Linux一大特点:一切皆文件。
    • Linux版本
      • 内核版本:开发版、稳定版
      • 发行版本:在内核版本上包装了很多常用的应用软件,在市场上发行销售的版本。
        • Redhat:红帽,是当前商业领域最成功的发行版本。这个是收费版本,带服务。
        • Ubuntu,这个是基于图形界面的Linux系统,跟Windows操作类似,可以用于个人电脑。
        • centos,这是我们要学习的版本,开源免费,也是公司使用最多的版本。这个版本的核心代码是从红帽系统拉下来的,跟红帽一家公司,所以稳定性安全性非常好。
  • 测试为什么要学Linux
    • 将来的公司90%项目是安装在Linux上
    • 测试还需要部署测试环境、安装项目
    • 需要监控项目运行状态,以及故障排查处理。
  • 如何使用Linux
    • 桌面化操作:比如ubuntu,centos也有带桌面的。这种方式只适合自己学习,企业里不可能这么用。企业的服务器一般不在本地。
    • 使用Linux系统原生的shell,主要方式:企业中,一般通过一些远程连接软件来操作,比如xshell、xftp,还有putty、winscp
    • 常用工具:
      • 命令行工具:xshell、putty
      • 传文件工具:xftp、类似的还有winscp
        • Windows和Linux系统之间传文件,使用工具
        • 如果是两个Linux操作系统之间,要使用scp命令来传输文件。
  • Linux目录结构
    • 首先linux所有的位置最顶层目录一定是/,都是从这个根目录开始的。
    • 使用cd命令可以切换工作目录,change directory,格式:cd 目录,ls命令可以查看当前目录下的内容,list such,格式:ls,pwd命令可以打印当前的工作目录,是从根目录开始的完整路径,print work diretory
    • 不能随便动目录
      • /bin:binary二进制的缩写,存放可以直接执行的命令的目录。比如说我们刚才使用的cd、ls命令就存储在这里。
      • /boot:是开机引导启动所需的系统文件。
      • /dev:设备device的缩写,存放系统各种设备的目录,比如硬盘、cup、光驱、屏幕、键盘,记住一点,Linux系统把所有东西都当作文件,包括硬件设备。有句名言:Linux一切皆文件。
      • /lib:library,库的缩写。存放系统使用的共享库,有点类似Windows下面的system32。
      • /proc:process进程的缩写,记录系统进程的目录。进程是运行当中的程序。
      • /sbin:是管理员的命令目录,存放着管理员经常执行的重要命令,比说关机命令。
      • /usr:用于存放系统的一些应用程序,/usr/local一般来说是管理员安装软件的目录,这个不是绝对的,安装到其他位置也可以,这是约定俗成的。
    • 可以动的目录
      • /etc:系统本身和应用软件的各种配置文件存放的地方
      • /home:家目录,存放普通用户家目录的地方,每个普通用户在/home下都自动生成用户名为名称的家目录。
      • /opt:option选项可选,的缩写,这是可选目录,是可以随便动的目录。你可以将一些应用程序安装在这个位置。
      • /root:管理员的家目录
      • /tmp:是存储临时文件的目录,可以随便动,重启后里面的东西会删掉。
      • /var:变量variable的缩写,存放经常变化的文件的地方,比如日志文件。
  • Linux命令格式
    • 命令关键字 参数1 参数2... 操作对象,注意:参数用-开头,参数可以有多个,多个可以分开写,也可以写到一起。
    • Linux系统区分大小写,并且文件没有特殊的后缀名。如:a.txt和A.txt,在Linux上是两个文件,在Windows上是一个。而且这里的后缀.txt不代表它是一个文本文件,这个后缀可以随便起。后缀名也可以没有。如果有后缀名,那么连同后缀名一起才是文件名称。
  • 快捷键
    • 方向的上下键,可以上翻下翻你敲过的历史命令。高级用法:输入history,可以显示所有敲过的命令,并且前面带编号,如果想使用哪条命令,输入:!编号  即可执行这条命令。
    • TAB键用于自动补全功能
    • 常见报错信息:Permission denied代表没有权限
    • CTRL+C:终止当前执行的进程或者命令
    • clear或者CTRL+L:清屏命令
    • 在命令行中快速定位:CTRL+a光标回到命令行首,CTRL+e光标回到命令行尾。
    • 复制粘贴:CTRL+insert复制选中的内容,shift+insert粘贴。在xshell等工具中,可以右键复制粘贴
    • ctrl+u删掉光标前面的内容
    • CTRL加鼠标左键的点击,可以快速定位到所选位置。
  • Linux常用命令
    • 切换用户:su 用户名,su是switch user缩写。su后面不跟用户名,默认切到root用户。注意:root切到普通用户不需要密码,反之需要,普通用户切到其他普通用户也需要密码。
      • su - 用户名,这个带减号参数的切换是完全切换,就是说不仅切换用户,还切换了用户所有的环境变量和家目录。这种情况下,使用exit可以退回到原来用户。
    • 普通用户临时使用管理员的权限:可以在命令前加一个sudo,这样当普通用户因为没有权限操作某个文件或命令的时候,就可以临时获得管理员权限,但有前提,就是需要将这个普通用户添加到一个文件中,这个文件是/etc/sudoers。
    • 系统时间相关命令
      • 查看时间:date
      • 设置时间:date -s 时间
      • 同步系统网络时间:ntpdate 时间服务器地址,如使用阿里的一个时间服务器地址:ntpdate ntp1.aliyun.com
    • 查看系统发行版本:cat /etc/*release
    • 关机和重启:
      • 关机:poweroff立刻关机,或者使用一个更通用的命令:shutdown -h now代表立刻关机,shutdown -h 10代表十分钟以后关机,如果要退出这个定时关机,使用shutdown -c。
      • 重启:reboot立刻重启,也可以使用shutdown -r now立刻重启,同理可以定时重启。
    • 注销命令:logout,比如使用了su - 用户名的时候,可以使用,还有exit同理。
  • 系统信息性能查看
    • 查看磁盘占用情况:df -Th,参数解释:T代表查看磁盘的时候同时显示磁盘类型,h参数代表以人类常见的形式单位来显示磁盘大小,比如k、m、G
    • 查看文件占用的空间:du -h
    • 查看内存使用情况:free -m,参数解释:-m参数是代表以m单位
    • 动态监控系统状况:top,这个一直在运行监控系统负载情况,退出按q
  • Linux网络命令
    • 网络命令
      • 查看网络配置信息:ifconfig,这个命令在mac os里也可以用。windows是ipconfig。127.0.0.1代表本机,即localhost,这两个都可以在网址中使用。
    • 测试网络连通性:ping IP地址或域名
    • 查看网络端口
      • 首先理解端口的概念,把一个服务器或者电脑,比喻成一栋房子,可以通过ip地址找到它,这个房子有不同的房间,就好比不同的端口,端口的作用是找到这个服务器上具体的某个程序。
      • lsof -i:端口号 list open file就是查看打开的文件,通过文件的形式查看一个端口的状态,使用root用户才能完全查看。
      • netstat -lntp代表目前正在监听状态下的端口,l代表监听,listen。netstat -antp代表所有使用tcp协议的端口
    • 网络配置
      • 修改配置文件
        • vi /etc/sysconfig/network-scripts/ifcfg-ens32
        • BOOTPROTO:代表ip分配机制,dhcp代表动态IP,static代表静态ip
        • IPADDR:指定当前的IP地址
        • GATEWAY:指定网关,一般跟IP地址前三位一样,最后一位是1
        • NETMASK:子网掩码,默认使用255.255.255.0
        • DNS:域名解析服务器地址,常用的是114.114.114.114
        • ONBOOT:代表是否立即生效,ye代表生效,no不生效。
        • 以上信息修改好之后,wq保存退出,并且重启网络服务,命令是:service network restart或者systemctl restart network
  • 目录操作
    • 绝对路径和相对路径
      • 绝对路径就是从根目录/开始的路径。好比说你家的地址,任何人根据此地址能找到你。
      • 相对路径就是相对你当前所在位置的路径。.代表当前目录,..代表上一层目录,~代表当前用户的家目录,cd -代表返回上次所在的目录。如果文件前面有一个点,代表这个文件是隐藏文件。
    • cd:进入某目录
    • pwd:打印当前工作目录
    • ls:查看目录里的内容,可以加参数:
      • -l参数代表查看详细信息,此参数命令可以简写成ll
      • -a参数代表查看所有文件,包括了隐藏文件
      • -h参数以人类常见的单位查看
    • tree,以树状图形式显示目录层级,注意,不要在根目录下使用这个命令
    • mkdir,创建目录,如:mkdir test。此命令可以加参数-p,作用是创建多级目录,如mkdir -p /home/zp/t1/t2
  • 文件操作
    • 创建文件
      • touch 文件名:在当前路径下创建一个空白的文件,也可以同时创建多个文件,空格分开即可。
      • vi 文件名:创建一个空白文件,并且进入vi编辑器。
    • 查看文件
      • cat 文件名:一般用于查看短文件,一次性显示文件内容,如果文件内容较多,会迅速划过,只显示最后一屏。
      • tac 文件名:倒过来查看文件
      • more 文件名:一次显示一屏,并且最底部会有提示信息,给出一个百分比,按空格space键,下一屏内容,按回车键,显示下一行。按q退出,显示完毕后会自动退出。more命令缺点:不能往回翻,不能回看。
      • less 文件名:跟more命令相似,但是它功能更强大,less可以回看。空格翻页,回车翻行,翻页使用pageup和pagedown,分别是上翻下翻。j、k是上下翻行。另外,还可以查找内容,使用“/关键字”就可以查找,同样按q退出,否则不会自动退出。
      • head 文件名:代表从头查看,默认显示10行
        • 参数:-数字,可以指定显示的行数,如head -20 文件名,代表显示前20行
      • tail 文件名:从尾部查看,也是默认显示10行
        • 参数:-数字,同理指定显示行数
        • 参数:-f,实时监听文件变化,实时监听按ctrl+c退出。
  • 文件目录通用操作
    • 通配符:*代表0到多个任意字符,?代表一个任意字符
    • 复制文件、目录
      • 格式:cp 【参数】 源文件 目标文件 cp是copy的缩写,当目标文件是目录时,源文件可以是多个,可以用相对路径或绝对路径。注意:如果复制的目标是一个目录,会在此目录下产生同名文件;如果是一个文件,代表了复制的同时重命名,相当于改名另存为。
      • 参数:-r,如果复制的是一个目录,需要加-r参数。-r这个参数经常遇到,代表了循环迭代,直到文件夹最后一层,专业术语叫递归。
    • 移动剪切文件、目录
      • 格式:mv 源 目标 mv是move的缩写,注意:源和目标如果相同就是重命名,否则就是移动。
    • 删除文件、目录
      • 格式:rm 文件或目录
      • 参数:-r代表递归
      • 参数:-f不需要提醒我确认,一路操作,强制删除。
      • 注意:rm -rf 文件或目录,此命令极其危险,一定要看清楚后面跟的文件或目录,如果删错,无法挽回。
    • 查找和搜索
      • 在目录下查找文件:find
        • 按名称查找:find 目录名 -name 文件名
        • 限定类型查找:find 目录名 -name 文件名 -type d(目录)/f(文件)
        • 模糊查找:find 目录名 -name “a*”代表查找以a开头的文件或目录
      • 在文件中查找字符:grep
        • 格式:grep 关键字 文件名,代表在文件名这个文件中搜索这些关键字
        • 参数:-c,代表只输出匹配的行数
        • 参数:-n,代表显示匹配的行以及行号
        • 参数:-i,代表忽略大小写
        • 参数:-v,代表显示不匹配的行
        • 模糊匹配:grep "^a" 文件名 ,代表在文件中搜索以a开头的关键字
        • 模糊匹配:grep "d$" 文件名, 代表在文件中搜索以d结尾的关键字
        • ^$这两个符号属于正则表达式的用法,关于正则表达式内容,可以自行学习。
  • 关于虚拟机下的centos环境
    • 装虚拟机之前,先查看自己的电脑是否启用了虚拟化技术参考这个链接:http://www.winwin7.com/JC/8784.html,如果禁用了虚拟化,需要进入bios系统打开。如果进入bios参考这里:https://www.somode.com/course/9614.html。进入bios之后如何启用虚拟化技术参考这个链接:http://m.winwin7.com/JC/8783.html。遇到虚拟机可以ping通外网,但本地无法ping通,可能是本地电脑的虚拟机路由没有自动配置ip地址,需要在设置-高级网络设置-更改设配器选项-选择虚拟机的路由VMnet8-配置它的ip地址和子网掩码即可,ip地址即你虚拟机linux系统的ip地址。
  • vi、vim文本编辑器
    • 命令模式:刚打开进入的就是命令模式,从其他模式按esc可以进入
      • gg可以跳到文件开头,G可以跳到整个文件最后一行
      • 0移动到所在行行首,$移动到行尾
      • dd删除所在行
      • 删除多行,先切换到底线模式设置行号,然后凭行号删除。如:set nu设置行号,然后在输入行号范围紧跟一个d,即可删除,如:5,10d
    • 底线模式:从命令模式按:进入
      • q,退出,wq保存并退出
      • q!强制退出,修改不生效。
      • w,保存,如果要另存为一个新文件,可以这么用:w 新文件名。
      • set nu:显示行号,set nonu不显示行号,输入行号回车还可以跳到指定行
      • set ic:忽略大小写,set noic 不忽略大小写
      • /关键字:查找搜索关键字,并且定位到搜索结果,如果搜索结果有多个,可以按n向下切换,按N向上切换。
    • 插入模式:在命令模式,按i、a、o进入
      • i:insert插入的缩写,直接在光标所在位置前面插入
      • a:append追加缩写,在光标后面插入
      • o:online的缩写,在光标所在行后面插入新的一行
  • Linux权限管理
    • ugo模式:u代表拥有者,g代表了所属组,o代表其他人,a代表所有人
    • 权限的类型:r,读,数字模式是4;w,写,数字模式2;x,执行,数字模式1
    • 使用ll命令可以查看到文件和目录的详情,其中包括了权限部分。
    • 修改权限:
      • 基于ugo修改:
        • chmod o+w 文件或目录,给其他人角色增加写权限
        • chmod o-w 文件或目录,给其他人角色去掉写权限
        • chmod go+w 文件或目录,给组用户和其他用户同时加上写权限
        • chmod o=r 文件或目录,就是给其他用户读权限,同时剥夺其他权限
      • 基于数字修改权限:
        • chmod 754 文件或目录,给文件分别赋予u(rwx)、g(rx)、o(r)权限
        • 数字权限的计算方法:
  • 打包和解包、压缩和解压:tar
    • 常用参数组合:
      • -cvf打包,c代表打包,v代表显示打包过程详情,注意:f参数要放到最后面,f后面紧跟打包后的文件名称,打包文件的后缀一般命名成XXX.tar
      • -xvf解包,x代表解包。
      • -z参数:以上两个参数组合,再加上z参数,分别代表了打包同时压缩,解包同时解压。打包并压缩的文件,后缀一般命名为XXX.tar.gz,或者.tgz。这种压缩格式用的是gzip。
      • -j参数:代表用bzip2这种格式进行压缩或解压,后缀名一般为tar.bz2
      • -P参数:代表以绝对路径表示打包文件(存放)
      • -C参数:代表切换打包或解压的工作目录(操作目标)
      • tar -Pzcvf /home/jianghao/   -C /jj/test2
  • 重定向:>    >>
    • 首先普及一个概念:linux输出输入文件包括三种,0标准输入,1代表标准输出,2代表错误输出。
    • 正常情况下,输出到显示屏,就是标准输出,此时,如果一切正常才会输出,发生错误则不会输出。标准输出重定向写作:1>,简写为>,如果希望把错误输出一并输出,则写作:2>&1,这个也可以简写为:&>,这两个就代表了标准输出和错误输出同时输出。
    • 如果不希望命令执行结果在屏幕上输出,使用>/dev/null
    • 重定向:
      • >覆盖重定向,如:命令>文件,命令的执行结果不会输出到屏幕,而会写入到文件里面,并且用覆盖的方式,文件原有内容全被覆盖掉。
      • >>追加重定向,追加相当于append,在文件原来内容后面继续写,不覆盖。如:ls>>shuchu,代表将ls命令的结果追加到shuchu这个文件里面。
      • 举例,一个这样的命令:rpm -qa>shuchu,这个命令代表了查询一下我目前的操作系统总共安装了哪些软件。然后把它写到shuchu这个文件中。
      • 举例,date命令可以输出当前日期时间,如果改成date>shuchu,就会把日期时间写入shuchu这个文件中,而屏幕上则不会输出。
  • 管道:|
    • 把上一个命令的输出,当作下一个命令的输入,再次进行处理。
    • 举例:rpm -qa | grep python,这个命令代表了先查询系统安装的所有软件,然后从这些软件中搜索python相关的软件。
  • 进程管理
    • 进程就是运行起来的程序,占用了cpu和内存的资源
    • 查看进程:ps,process status的简写
      • 不带任何参数直接使用ps,代表了当前用户当前终端的进程。
      • 参数:-e,代表显示所有进程,就是所有用户的进程
      • 参数:-f,代表输出更完整的信息。
      • 配合管道符一起使用:ps -ef|grep java,这是常用的方法。
    • 终止进程
      • 任务完成后,进程自己退出
      • 用户让其退出,比如vi编辑器,使用退出命令q
      • 异常退出。
      • CTRL+c,杀死当前进程。
      • 手动杀死进程:kill 进程id
      • 可以加-9参数,强制杀死进程,即使进程正在被其他进程调用,也会杀死。如:kill -9 进程id。注意:只有root用户和进程的所有者才能杀死这个进程。

  • shell脚本
    • shell script,结合了Linux命令和一些编程方法的批处理文件,shell脚本本身是一种编程语言
    • 编写一个shell脚本有固定格式,第一行这么些:#!/bin/bash
    • 执行shell脚本的方式
      • 子shell执行:
        • 绝对路径执行
        • ./文件名 执行,也可以写作:sh 文件名执行(不需要修改权限)
      • 全局shell执行:(不需要修改权限)
        • source 文件名
        • . 文件名
    • 实战1:编写一个shell脚本,功能是打印一句话'hello world',并打印当前的时间,名称是date.sh,使用vi date.sh新建并编辑这个脚本,里面内容如下:
      • #!/bin/bash
      • echo 'hello world'
      • echo $(date)
    • 实战2:编写一个shell脚本,功能是备份日志,把/var/log目录下的所有日志文件,打包备份,放到/home/zhangpei下面。使用vi log-backup.sh新建并编辑这个脚本,里面内容如下:
      • #!/bin/bash
      • #备份日志,把/var/log目录下的所有日志文件,打包备份,放到/home/zhangpei下面
      • time=$(date +%Y%m%d-%H%M%S)
      • tar -Pzcf /home/zhangpei/log-$time.tar.gz -C /var/log .


测试浅学(1)(2)
  • 一、概述
    • 1、为什么学Python
      • 高级编程语言:C、C++、C#(C Sharp)、Object-C、Java、JavaScript、Php、Python等
      • Python是最好入门的编程语言,没有之一,荷兰 阿姆斯特丹大学 Guido van Rossum。Python原意蟒蛇。
      • 在人工智能、数据分析、数据挖掘、Python web开发、少儿编程、自动化测试(webUI、APP、接口、性能测试)等领域广泛应用。
    • 2、Python语言的特点
      • 简单:语法简单、结构明确、关键字少
      • 开源免费
      • 解释型语言(自上而下,边解释边执行,编译型先编译出exe,然后运行)
      • 既是面向对象的语言又是面向过程的语言
    • 3、搭建Python开发环境
      • Python解释器
      • 集成开发环境(工具)IDE(Integrated Development Environment)Pycharm、VScode
  • 二、语法基础
    • 1、注释
      • 注释是说明性的文字,用来说明程序的功能,便于他人读懂程序,不执行
      • 三种注释方式:
        • 1、用一对三双引号将注释内容包围起来,可以换行
        • 2、用一对三单引号将注释内容包围起来,可以换行
        • 3、用#进行单行注释,快捷键 ctrl+/
    • 2、语法结构
      • 每行代码顶格写,末尾不用加分号
      • 用缩进表示代码块,缩进4个空格或一个Tab键
      • 格式化代码的快捷键 ctrl+alt+l
    • 3、输入和输出
      • 输入
        • input()从屏幕接收用户输入的信息赋值给变量
        • input()接收的输入内容全部转为字符串类型
      • 输出
        • print()是python内置方法,实现打印输出内容的功能
        • print可以打印输出多项内容,print语句中用逗号分隔
        • 打印输入的多项内容默认用空格分隔,可以用sep='*'改变分隔符
        • print打印完毕一行内容后默认换行,可用end=';'修改不换行
    • 4、标识符
      • 标识符:   标识符就是名字,例如:项目名、包名、文件名、方法名、参数名、变量名、模块名、类名、对象名等
        • 命名规则:
          • 1、由字母、数字、下划线组成,不能以数字开头,尽量不要用下划线开头(python中下划线开头的标识符有特殊含义)
          • 2、不能用Python关键字(保留字)作为标识符,例如if、True、print、help等
          • 3、标识符大小写敏感(区分大小写)
          • 4、标识符见名知意,不要使用a、b、c,使用name、age、student
        • 命名规范:
          • 模块名、包名、方法名、函数名、变量名、对象名:每个单词小写,单词之间用下划线连接,例如:age、class_name、get_age
          • 类名:每个单词首字母大写(大驼峰命名法),单词之间不用加下划线,例如ClassMate
          • 常量:字母全部大写,单词之间用下划线连接,例如MATH_PI、PASS_WORD
    • 5、变量
      • 变量:值可以改变的量,作用是存储数据,变量名遵守标识符命名规则
      • 变量在使用前必须用=(赋值号)赋值,变量赋值后就被创建(定义)完成
      • 可以同时给多个变量赋值,变量名区大小写,变量可以多次赋值
      • python是弱类型语言,变量类型由所赋值的类型决定,可以用type()方法来查看变量类型
    • 6、常量
      • 值不能改变的量,常量单词全部大写,单词之间用下划线连接 MATH_PI
      • Python中没有任何机制可以保证常量值不被修改,全凭自觉,一般将常量放在代码最上面
  • 三、数据类型
    • Python中的六大数据类型:数字类型(整型int、浮点型float、布尔bool)、字符串类型str、列表list、元组tuple、字典dict、集合set
    • 1、数字类型
      • a、整型int
        • 整型的多进制:十进制、二进制、八进制、十六进制
        • 整数进行的运算:加+ 减- 乘* 除 / 整除 // 取余 % 乘方**
        • int()把其他类型的数转为整数或将其他进制数据转为十进制数
        • bin()将其他进制数据转为二进制数
        • oct()将其他进制数据转为八进制数
        • hex()将其他进制数据转为十六进制数
      • b、浮点型float
        • 浮点数float就是小数,例如5.3 25.8
        • 浮点数能够进行的运算:+ - * / // % **
        • 浮点数如何取整数int()直接舍弃小数部分、round()四舍五入取整
        • 保留指定位数的小数round(f1,n)
        • 计算机中浮点数存储的是近似数值,不能直接用等于号判断两个浮点数是否相等,需要用math.isclose()方法
      • c、布尔类型bool
        • bool类型的值:True和False
        • bool类型能够进行的运算:比较运算(相等==、不相等!=、大于>、大于等于>=、小于<、小于等于<=)和逻辑运算(逻辑与and 逻辑或or 逻辑非not)
        • bool类型主要用于条件判断
        • bool()将其他数据类型转为bool类型
    • 2、字符串类型str(string)
      • a、字符串的表示及转义字符
        • 字符串的表示方法:用一对单引号、一对双引号、一对三单引号、一对三双引号将字符串内容引起来
        • 常用的转义字符:换行\n 制表符(空四个空格)\t 输出一个单引号\' 输出一个双引号\"  输出一个右斜杠\\
        • 单双引号可以相互嵌套
        • 当文件路径中出现转义字符报错时,解决方法三种:(1)使用\\(2)使用r前缀(3)将路径中的右斜杠替换为左斜杠
      • b、字符串前缀
        • r' ':忽略转义字符,保持原始字符
        • f' ':格式化字符,用变量的值替换字符串中变量名
        • b' ' :二进制字节流
        • u' ':一般放在中文字符串前面,表示采用Unicode编码
      • c、字符串格式化
        • 1、用f前缀格式化字符串,先用{name}占位,用变量的值替换字符串中的占位符
        • 2、用%s、%d、%f来占位,后跟%(变量),用变量值替换占位符
          • %s 用来格式化字符串
          • %d 用来格式化整数
          • %f 用来格式化浮点数
        • 3、用{n}来占位,n从0开始依次加1,后跟format(变量1,变量2,...变量n)
      • d、字符串的常用方法
        • 将其他类型转为字符串str()
        • 替换replace()
        • 首字母大写capitalize()、每个单词首字母大写title()、全部大写upper()、全部小写lower()
        • 是否全部为数字字符isnumeric()、是否全部为字符(字母和汉字)isalpha()、字母是否全部大写isupper()、字母是否全部小写islower()
        • 去除字符串开头或结尾的空格lstrip()、rstrip()、strip()
        • 切割字符串split()、合并字符串join()
      • e、字符串作为序列的常用操作
        • 序列:在内存中分配一块连续的空间来保存多个元素,每个元素都分配一个数字(下标),数字表示元素的位置,第一个元素下标是0,第二个元素下标是1,以此类推。
        • 下标从左数由0开始,下标从右数由-1开始
        • 哪些数据类型是序列:字符串、列表、元组、字典、集合
        • 字符串序列常用操作
          • (1)通过下标访问元素s1[3]
          • (2)通过切片+步长访问元素
          • (3)index()获取某个元素的下标
          • (4)in和not in判断元素/子串是否在字符串中
          • (5)字符串拼接+,重复*
          • (6)字符串长度len()
          • (7)某个元素的出现次数count()
          • (8)获取字符串中元素的最大和最小值 max() min()
          • (9)字符串的遍历
      • f、字符编码
        • 为什么需要编码:计算机硬件结构决定它只认识0和1,英语中的字母、数字、符号需要存储在计算机中
        • ASCII码(American Standard Code for Information Interchange 美国信息交互标准码): 用一个字节(8bit)将英语中的所有符号进行编码,例如:abc ------->011000010110001001100011
        • GB2312:中国人发明的国标码,用2个字节将简体汉字进行编码,GBK、GB18030
          • 各个国家都使用自己的编码方式,无法沟通交流,经常出现乱码。
        • Unicode编码(Unicode字符集):国家标准组织ISO发明,用2-4个字节,将全世界所有国家的符号进行统一编码,这样解决了乱码问题。           带来的问题:存储英语中的符号会造成空间浪费,在很长时间内没有被采用。
        • UTF-8编码:互联网普及后,出现了可变长度编码方式,用1-4个字节对字符进行编码,这种方式不会带来空间的浪费。utf-8是Unicode编码的实现方式之一。英文使用1个字节编码、常用汉字用3个字节,比较生僻的符号用4个字节
        • 计算机通用的字符编码处理方式:
          • 在内存中保存数据时采用的是Unicode编码,在网络上传输数据或将数据保存到文件时,采用utf-8。
        • 常用方法:
          • 获取字符的编码(十进制)ord()
          • 根据编码获取字符char()
          • 编码encode()
          • 解码decode()
    • 3、列表
      • a、列表的表示
        • 用[]来表示一个列表,元素之间用逗号分隔
      • b、列表的特点
        • 元素异质(不同数据类型),可以任意嵌套
        • 可以原位修改
          • 可变序列:列表、集合、字典
          • 不可变序列:字符串、元组
        • 增加元素append() insert()
        • 删除元素pop() remove()
      • c、列表的常用操作
        • 复制操作copy()
        • 翻转列表reverse()
        • 排序sort()
        • 扩展列表extend()
        • 清空列表中的元素clear()
      • d、列表作为序列的通用操作
        • (1)通过下标访问元素l1[3]
        • (2)通过切片+步长访问元素
        • (3)index()获取某个元素的下标
        • (4)in和not in判断元素/子串是否在字符串中
        • (5)字符串拼接+,重复*
        • (6)字符串长度len()
        • (7)某个元素的出现次数count()
        • (8)获取字符串中元素的最大和最小值 max() min()
        • (9)字符串的遍历
    • 4、元组
      • a、元组的表示
        • 元组用()表示,元素之间用逗号分隔
      • b、元组的特点
        • 元素异质,可以任意嵌套
        • 元组是不可变序列(不支持原位修改)
        • 元组不支持添加append()、insert()和删除pop()、remove()
        • 元素元组的不可变是相对的,可以改变元组中的可变序列
        • 列表和元组可以相互转换
      • c、元组作为序列的常用操作
        • 与列表和字符串操作相同
    • 5、字典
      • a、字典的表示
        • 字典存储的是具有映射关系的数据。
        • 字典用{}表示,每个元素都是key:value组成的键值对,元素之间用逗号分隔
      • b、字典的特点
        • key值:不可变数据类型(数字、元组、字符串),无序,不可重复
        • value:可以是任意类型
        • 生成字典:(1)直接赋值(2)可以将列表嵌套元组转为字典(3)将列表嵌套列表转为字典(4)fromkeys()
        • 访问字典:(1)d1[key] (2)d1.get(key)字典中添加元素时,如果key不存在,则添加新元素,如果存在就修改原元素的value值
        • 字典中删除元素 d1.pop(key)  del d1[key]
        • 字典的三个序列:所有key组成的序列、所有value组成的序列、所有key:value组成的序列
      • c、字典作为序列的通用操作:
        • max() min()   len()
    • 6、集合(字典key组成)
      • a、集合的表示
        • 集合用{}表示,元素之间用逗号分隔
      • b、特点:
        • 无序,元素不可重复,不能用下标访问
        • 元素只能是不可变类型(数字、字符串、元组)
        • 添加元素add()
        • 删除元素remove()
        • 集合交集&、并集|
      • c、集合作为序列常用操作:
        • in和not in
        • max() min()
        • len()
        • 集合的遍历
  • 四、运算符
    • 算术运算符:加+ 减- 乘* 除/ 取余% 整除// 乘方 **
    • 比较运算符:等于== 不等于!= 大于 > 大于等于>= 小于< 小于等于<=
    • 逻辑运算符:与and 或or 非not
    • 成员运算符:in not in
    • 赋值运算符:赋值= 加赋值+= 减赋值-+ 乘赋值*= 除赋值/= 取余赋值%= 整除赋值//= 乘方赋值**=
  • 五、程序的控制结构
    • 程序的控制结构分三种:顺序、分支、循环
    • 1、分支结构
      • 单分支:if
        • 条件成立,执行if下面的语句,否则直接结束
      • 双分支:if else
        • 条件成立,执行if下面的语句,否则执行else下面的语句
      • 多分支
        • 条件成立执行if下面的语句,否则进行新的条件判断
    • 2、循环结构
      • 循环:重复多次执行相同的操作
      • for循环
        • range(n) 生成从0至n-1的整数序列
        • range(m,n) 生成从m至n-1的整数序列
        • range(m,n,step)按步长生成从m至n-1的整数序列
        • for循环一般和if条件结合使用
      • while循环
        • 只有循环条件为True就一直执行循环,直到循环条件为False
        • 注意事项:在循环体中一定要修改循环控制条件的值,否则会进入死循环
    • 3、与分支循环相关的控制语句
      • break:跳出(结束)整个循环
      • continue:跳出(结束)本轮循环,继续下一轮循环
      • pass:空语句,什么都不在,保持程序结构的完整性
  • 六、函数
    • 1、函数说明
      • 一段代码重复执行某个操作或完成一个特定的功能,将这样的代码组织成为函数。
      • 作用:易于代码的维护和修改,提高代码的重复利用率
      • 函数的定义define:
      •          def  函数名(参数):
      •                  函数体
      •                  return 返回值
      • 函数参数:
        • 定义函数时括号中的参数叫做形式参数,简称形参
        • 函数调用时括号中的参数叫做实际参数,简称实参
        • 函数调用时将实参传递给形参
        • 函数可以没有参数
      • 函数的返回值:
        • 有返回值的函数用return语句返回
        • 若函数无返回值,可以不写return语句,解释器默认return None
        • 返回值类型可以是任意类型
    • 2、变量作用域
      • 局部变量:在函数体内定义的变量,作用范围是整个函数内部,出了函数体不能访问
      • 全局变量:在函数体外定义的变量,作用范围是整个文件(模块),在函数内外都可以访问
      • Python对全局变量有屏蔽保护作用,当我们在函数体内定义和全局变量名称相同的局部变量,函数体内使用的是局部变量。
    • 3、函数参数
      • a、位置参数
        • 函数调用时,实参按照位置顺序依次传递给形参
        • 实参的个数必须和形参个数保存一致,否则会报错
      • b、默认值参数
        • 函数定义时,可以给一些参数赋值,这样的参数就是默认值参数
        • 函数调用时,可以给默认值参数传参也可以不传参,不传参使用默认值,否则用传入的值
        • 默认值参数放在函数参数的最后面,可以有多个
        • 一般将实参值变化性小的参数作为默认值参数
      • c、可变参数
        • 函数定义时,可变参数前加*
        • 函数调用时,可变参数可以传入任意多个(包含0个)参数
        • 形参前加*,函数内部将传入的多个实参打包成元组
        • 实参前面加*,表示拆包,将元组中的元素逐个传递给函数
      • d、关键字参数
        • 函数定义时,参数前面加**就是关键字参数
        • 函数调用时,关键字参数可以传任意多个带名称的参数,参数名随意 args  arguments
        • 形参前面**,将传入的参数值打包成字典
        • 实参前面两个**,拆包
      • e、命名关键字参数
        • 函数定义时,*,后跟参数名,这样的参数是命名关键字参数
        • 命名关键字参数可以有默认值
        • 函数调用时,实参名称必须和形参名称相同
        • 如果函数参数既有可变参数又有命名关键字参数,需要将*,省略跟在可变参数后面的参数就是名关键字参数
      • f、五种类型函数参数比较
      • g、五种参数的使用顺序:    1)位置参数-->2)默认值参数-->3)可变参数-->4)命名关键字参数-->5)关键字参数
    • 4、函数返回值
      • 函数有返回值用return返回
      • 函数的返回值可以有多个,多个返回值之间用逗号分隔
      • 当有多个返回值时,多个返回值组成元组返回
  • 七、模块和包
    • 模块
      • 模块就是.py文件,模块是对代码更层次的组织和管理。
      • python三种类型模块
        • (1)自定义模块
        • (2)Python内置模块(安装Python解释器后可直接使用的模块)
          • import sys 与解释器或平台相关的功能
          • import os 与操作系统相关的函数
          • from datetime import date 、 from datetime import datetime、  import time与时间日期相关的功能
          • import random与随机数相关功能
        • (3)第三方模块(必须先安装后使用)
          • flask:用于web程序开发
          • pytest:用于接口测试
          • selenium:用于webUI自动化测试
          • faker:生成测试数据
      • 导入模块
        • import 模块名
        • from 包名.模块名 import 方法名/类名 as 别名

      • 包就文件,里面包含一个__init__.py文件,此文件标识当前目录是包
      • 包是对模块进行组织和管理。引入包后,可以将相同模块名称的py文件放在不同的包名中,避免文件名冲突。

  • 八、列表推导式和__name__变量
    • 列表推导式是一种简单生成列表的方式。
      • l2 = [n * n for n in l1]
      • l3 = [n * n if n % 2 == 0 else n for n in range(1, 11)]
    • __name__变量
      • __name__是Python内置变量,变量中保存当模块执行时的名称
      • Python文件有两种执行方式:
        • 直接执行:当右键运行程序或ctr+shift+f10运行时,__name__中的值是__main__
        • 导出执行:当用import导出到其他模块执行时,__name__中的值是当前模块文件名name_var11
      • if __name__ == '__main__':这个条件下是当前模块的验证性代码(调用函数、创建类对象等)
      • 当导出到其他模块时,这些验证代码不执行不执行的原因是if __name__ == '__main__' 条件不满足。
  • 九、面向过编程与面向对象编程
    • 1、POP(Procedure Oriented Programming)面向过程编程
      • POP将整个需求划分成若干个步骤,每个步骤定义为一个函数,通过函数的逐步调用来完成需求。
      • POP以函数为最小单位,强调的是功能行为,主要考虑怎么做(函数/算法)
      • 实现方式:定义函数,通过函数的逐步调用(层层调用)来实现需求
      • 面向过程编程=数据+算法/函数 对于给定的输入数据,经过加工处理,返回输出数据 IPO(Input Process Output)
      • 例如:张三早上开宝马去上班,面向过程编程可以梳理为如下步骤:
    • 2、OOP(Object Oriented Programming)面向对象编程
      • OOP考虑核心不是如何实现需求,而是将整个需求里面涉及的几类事物分析出来, 将事物的数据(说明信息)提取为属性(attribute),将事物的动作提取为方法(method)   ,该过程就是在定义类(自定义一个类型)。
      • 定义类后需要创建类的对象(定义类的变量),通过对象调用方法完成需求。

      • 例如:张三开宝马去上班,用面向对象编程可以抽象出人和车两类事物,将人和车的数据抽象为属性,将人和车的动作抽象为方法
      • a、类的定义
        • class关键字定义类,后跟类名,后跟括号冒号,括号中是父类,python默认的父类是object, 如果父类是object,可以省略不写
        • __init__方法是类的实例化方法(构造方法、初始化方法),方法名固定,用来绑定(定义)属性, self参数固定,必须有,但是不需要传值,创建对象时,解释器将当前对象(实例)赋值给self。
        • 类的方法必须有一个参数self,用户调用时不需要给self传参数。类方法的形参类型和返回值与普通函数规则相同
      • b、属性的访问权限:
        • 属性名前有__,这样的属性是私有private属性,私有属性只能在类内部访问,在类外部不可访问
        • 属性名前无__,这样的属性是公有public属性,公有属性可以在类内和类外访问
        • 需要在类外部修改或访问私有属性,可以增加get_XXX和set_XXX方法,通过这一对方法获取或修改私有属性的值
      • c、面向对象的三大特征:
        • 1)封装:将现实生活中的对象的数据封装为属性,将对象的动作封装为方法。封装隐藏了类内部的实现细节,创建的对象通过公有方法访问现实对象的属性,封装是为了保护数据。
        • 2)继承:定义一个类时可以从现有类继承,被继承的类叫做父类、基类或超类,新定义类叫做子类或派生类
          • 子类继承父类所有非私有的属性和方法
          • Animal(__name,方法running()、barking())
          • ----->Cat(Animal) 全部继承
          • ----->Dog(Animal) 自己的属性type 自己的方法print_type
          • 方法的重写:子类中重写定义和父类名字及参数完全相同的方法。
          • 继承的好处可以提高代码的复用性。
        • 3)多态:子类继承父类,子类的实例对象同时属于子类类型和父类类型,这叫做多态。
      • d、实例属性和类属性
        • 实例属性
          • 在__init__构造方法中绑定(定义)的属性叫做实例属性
          • 实例属性归各个实例(对象)所有,互不影响
        • 类属性
          • 在类中直接定义的属性
          • 类属性有所有实例共享,所有的实例(对象)都可以访问类属性,
          • 类属性可以通过对象名访问也可以通过类名访问,推荐使用类名访问
      • e、类方法分类
        • 实例方法:所有具有self参数的方法,只能通过实例或对象来访问
        • 类方法:方法上用@classmethod修饰,第一个参数是cls(调用时不需要传参),类方法可以通过类名访问也可以通过对象名访问,推荐用类名访问
        • 静态方法:方法上用@staticmethod修饰,没有self也没有cls参数,静态方法可以通过类名访问也可以通过对象名访问,推荐用类名访问
  • 十、异常和调试
    • 异常
      • 程序运行过程中会出现各种各样的错误,我们把这些错误统称为异常。
      • 异常种类:
        • (1)开发人员由于逻辑上没有想到的问题,程序出现异常---开发bug(开发人自行解决)
        • (2)由于需要里面缺少合法性检查逻辑,导致程序出现异常---测试人员bug(测试人员发现)
        • (3)不可避免的问题,例如需要向磁盘写入文件发现磁盘空间不足、连接数据库时突然网络中断等,程序运行中的异常
      • 为什么处理异常
        • (1)程序会中断执行,影响后续代码的执行
        • (2)出现异常时的返回信息不人性化,用户读不懂
      • 如何处理异常
        • 使用 try...except...finally 来捕获(处理)异常
        • 把可能发生异常的代码放在try代码块中,发生异常后需要用except语句去捕获,把无论是否发生异常都需要执行的代码放到finally语句块中。
        • try...except...finally不是必须同时出现,可以没有finally
      • 手动抛出异常
        • 默认Python解释器抛出异常,可以raise手动抛出异常
        • 可以手动抛出内置异常,也可以手动抛出自定义异常,自定义异常必须从Exception继承
    • 调试
      • 程序编写完毕一次直接运行成功的概率很小,经常会出现各种问题,这时候需要调试程序。
      • 调试程序的3种方法:
      • 1)debug调试,需要IDE在进行并且需求加断点
      • 2)print()调试这两种方式的缺点:1、依赖于开发环境,程序发布后无法使用
      •                                                                            2、太多print()影响程序执行效率,在调试完毕后需要将其删除
      • 3)日志功能日志是非常重要且常用的功能,一般用于记录程序中的调试信息、关键变量的状态或用户行为
      • 五个日志级别:从低到高 debug<info<warning<error<critical
      •                                                             调试    信息     警告     错误   致命
      • 默认日志级别是warning警告,代码中如果有多个debug()、info()、warning()、error()、critical()大于或等于当前日志等级的方法才会执行
      • 一般调试阶段将日志等级设置为debug,发布上线阶段将日志等级设置为error
  • 十一、读写文件
    • 读文件
      • 读文件是将文件中的内容读入内存并赋值给变量,然后在代码中使用;
      • 读文件的步骤
      • (1)打开文件
      • (2)读取内容
      • (3)关闭文件
      • 用with语句打开文件,可以不用手动关闭文件
      • 三种读文件内容的方法
        • read()读取文件的所有内容,返回字符串类型
        • readline() 读取文件第一行内容直接返回,返回字符串类型
        • readlines()按行读取,读取文件所有内容,每行内容作为列表的一个元素,返回列表
      • open方法的mode参数说明
        • r:read 读文件
        • t:text 文本文件
        • b:binary 二进制方式
        • w:write 写文件
        • a:append 追加写文件
        • x:若文件不存在则先创建文件
        • + :可读可写
    • 写文件
      • 写文件是将变量(内存)中的内容写入文件中。
      • 写文件的步骤:
        • (1)打开文件
        • (2)写入文件
        • (3)关闭文件

免费评分

参与人数 10吾爱币 +15 热心值 +10 收起 理由
arsleeli + 1 + 1 我很赞同!
执骨哟 + 1 + 1 用心讨论,共获提升!
猛浪若奔 + 1 + 1 用心讨论,共获提升!
zhyerh + 1 + 1 谢谢@Thanks!
hualili + 1 + 1 热心回复!
liu8833637 + 1 + 1 我很赞同!
yamisxu + 2 + 1 热心回复!
wubusi + 2 + 1 整理不易,测试不易!
小兴818 + 2 + 1 谢谢@Thanks!
peiwithhao + 3 + 1 十分详细

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

jinmu004 发表于 2023-3-9 00:13
写得挺好的,支持下~请问楼主是看的哪些教程呢,感觉很详细啊
wuaipojieuser 发表于 2023-3-9 05:11
luoyan2022 发表于 2023-3-9 08:15
sharpV1 发表于 2023-3-9 08:38
主要还是学以致用,缺少应用场景
周遭阿 发表于 2023-3-9 08:44
一般的简单的测试只需要学会在虚拟机内搭建contos系统 并且部署上项目的前后端 启动 然后测试项目内的功能

如果是linux运维 那方向就比较多了,系统运维、软件运维、自动化运维、云计算运维、使用的相关技术也不一样,有些就是监测部署的linux系统是否正常运行,而有些则是部署一些监控软件和编写一些脚本,来进行自动化运维以及监测部分。

个人理解,Python更牛一点,但是我学的shell 哈哈哈哈
qq6741 发表于 2023-3-9 09:20
写的挺好,支持下
QQending 发表于 2023-3-9 09:38
用的是类似mubu之类的软件,然后导出的md?
非标题的层级化好严重
keber 发表于 2023-3-9 10:29
感谢分享!
marschen 发表于 2023-3-10 09:53
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-11 14:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表