乐趣区

关于python:oeasypython0036牛说cowsay小动物说话asciiartfigletlolcat管道

牛说(cowsay)

回顾上次内容

  • 上次咱们钻研了 shell 脚本的编程
  • 并且在 shell 中实现了

    • 循环语句
    • 提早命令
    • 清屏命令
    • python 命令
    • figlet 命令
  • 还能整点什么呢?🤔
  • 还想要让小动物报时

cowsay

  • 首先要装置 cowsay
sudo apt install cowsay
  • 装完之后

    • cow 就能够 say 了吗?
  • 怎么 say 呢?

利用管道

  • 利用管道 (pipe) 来 say
  • 如何与报时函数整合呢?

整合

  • 这如何和咱们的报时程序整合呢?
#!usr/bin/python3
import time
print(time.asctime())
  • 一步一步来
  • figlet 的后果再通过管道送 cowsay

管道原理

  • 而后尝试循环起来

把 cowsay 整合进来

  • 把 figlet 的输入后果再送到 cowsay -f moose -n

    • 其实就是一步步通过管道流淌的过程
for a in {1..10}
do
    clear
    python3 show_time.py | figlet |cowsay -f moose -n
    sleep 1s
done
  • 看起来有点简单

    • -f moose

      • 应用驼鹿
    • -n

      • 保留转义字符\n
      • 防止屏幕凌乱
  • 这的确有点亚文化😓
  • 能够来点更亚的文化吗?😄

黑白成果

# 装置黑白程序
sudo apt install lolcat
#试验
echo oeasy | lolcat
  • 这样就能够输入黑白成果了
  • 这个能够!

    • 真的很亚☺
  • 能够再把报时整合进来吗?

整合报时

  • 有的时候会因为宽度问题
  • 感觉很乱
  • 我想把工夫简化为时分秒

整合工夫

  • 整合进入原来的 loop.sh
  • 循环中

    • 清屏后
    • 输入这个成果
    • 再延时
for a in {1..100}
do
    clear
    python3 sleep.py | figlet | cowsay -f moose -n | lolcat
    sleep 1s
done
  • 输入工夫太长

    • 其实我只想输入时分秒

搜寻

  • 这个就得批改最后的生成工夫的源头
  • 批改 show_time.py 文件

show_time.py

#!/usr/bin/python3
import time
localtime = time.strftime('%H:%M:%S',time.localtime())
print(localtime,end="")
  • 这个货色应该如何了解呢?

具体了解

  • strftime 函数

    • str 是字符串 string 的意思
    • f 是 format
  • strftime 函数 把一个 time.localtime()

    • 格式化为一个字符串
  • 缺省参数就是以后工夫
#!/usr/bin/python3
import time
print(time.strftime('%H:%M:%S'),end="")
  • 格局如何了解呢?

了解格局

  • 格式化成 %H:%M:%S 这个格局

    • 这个格局选取了三个工夫元组项

      • %H 是小时
      • %M 是分钟
      • %S 是秒钟
      • 两头用: 宰割
  • 试验走起来

间接运行 sh

  • 这两个搭配起来的确能够运行了!
  • 然而循环次数还是受限制
  • 能够做一个永远循环的吗?

搜寻

  • 看起来是把

    • for i in {0..100}
  • 换成

    • while true

替换成果

  • 成果还行

更多成果

  • 哈哈 火鸡 turkey 也能谈话

    • 兴许咱们也能够用 fortune-zh
    • 把偈语打到时钟旁边???
  • 如果我想间接运行 loop.sh 呢?

    • 而不是 sh loop.sh 能够么?

间接运行

  • 间接运行的话
  • loop.sh没有执行权限
  • 给他提权

    • chmod 扭转模式
    • u+x 给以后用户减少执行权限
chmod u+x loop.sh
./loop.sh
  • 而后再运行
  • 绿色阐明能够运行了
  • 不过后面还是须要以后门路./

    • 如果就想要 loop.sh 间接运行
    • 不要以后门路 ./ 呢?

设置门路

export PATH=$PATH:.
  • 留神 $ 的地位

    • 后面的是 PATH 没有 $
    • 前面的 $PATH 有 $
  • .(点) 指的是以后的门路
  • 这样

    • 就能够间接运行以后门路下的程序了
    • 不必在程序后面加上 ./
  • 不过如果关了以后的 shell

    • 还是不能间接运行
  • 怎么办来着?🤔

~/.zshrc

  • 编辑以后 zsh 的配置文件 ~/.zshrc

    • 每次进入 zsh 都会执行这个配置文件的
  • 这样重开一个 shell

    • 还是能够间接运行 loop.sh
    • 跳出循环能够用ctrl+c
    • 把循环放到后盾用ctrl+z
  • 这就是咱们之前都接触过的内容了!

    • 啊~ 终于实现了
    • 不容易!!!
    • 能够本人做一个小动物吗?
  • 还是先来总结一下吧!

总结

  • 咱们狂飙了一路
  • shell 程序

    • 从用 shell 间接运行 python 程序
    • 到用 shell 循环运行 python 程序
  • shell 中的循环体

    • 把 python 的输入后果用管道交给了 figlet 程序
    • 把 figlet 输入的后果用管道给了 cowsay
    • 把 cowsay 的后果给了 lolcat
  • 最初是提权间接运行 shell 程序
  • 这一路真的好远啊

    • python3 是脚本解释器
    • shell 也是脚本解释器
    • 其实咱们是在 shell 中利用 python3 的输入后果

      • 用 shell 把 python 的粘了起来
      • 分时输入的
    • 不过这一路真的好绕

      • 如果能用 python 间接调用 shell 中的命令就好了
      • 那个时候 python 就成了胶水的主体
      • 实现主循环、提早等粘合的工作
    • 兴许有一天能够做到
  • 能够本人画一个小动物来报时吗?🤔
  • 咱们下次再说程序!👋
  • 蓝桥 ->https://www.lanqiao.cn/course…
  • github->https://github.com/overmind19…
  • gitee->https://gitee.com/overmind198…
  • 视频 ->https://www.bilibili.com/vide… 作者:oeasy
退出移动版