zl程序教程

您现在的位置是:首页 >  Python

当前栏目

[oeasy]python0028_直接运行_修改py文件执行权限_设置py文件打开方式

2023-02-18 15:49:55 时间

直接运行

回忆上次内容

  • 我们把两个程序整合起来了
    • 可以持续输出当前时间
    • 每秒都更新

编辑

  • 但是我想在 shell 里面
    • 只输入文件名(./sleep.py)并回车
    • 就能不断输出时间
    • 可能吗??
import time
while True:
    print(time.asctime())
    time.sleep(1)

尝试执行

  • 第 1 句 根本没有找到 sleep.py

编辑

  • 第 2 句 根据相对路径路径./ 找到了 sleep.py
    • 其中 . 代表的是当前目录
    • 在/home/shiyanlou/找到sleep.py
  • 但是没有权限
  • 要想办法观察到文件的可执行权限

观察权限

  • ls 是 列出(list)当前文件夹下的所有文件
  • -lh是参数
    • l(list)
      • 代表着使用的是一行行列表的方式
      • 这样可以查出文件详细信息
        • 大小
        • 读写权限
    • h(uman readable)
      • 指的是文件大小使用k、m这种
      • 更人类可读(human readable)的方式
      • 而不是采用字节的方式
#查询sleep.py
ls -lh sleep.py
#修改权限
chmod u+x sleep.py
#再次查询sleep.py
ls -lh sleep.py
  • sleep.py
    • 指的是我们就是要查询的文件
    • 就是sleep.py
  • 查询之后什么结果呢?

ls结果

  • chmod u+x sleep.py
    • chmod
      • change 改变
      • mode 状态位 mode bits
    • u+x
      • user 当前用户组
      • +x增加 excute 的权限
    • sleep.py
      • 被改变的文件名称

编辑

  • 注意下图红圈位置的变化
    • 从 - 到了 x
      • - 就是没有 excute 的权限
      • x 就是有了 excute 的权限
  • 这回能执行了么?

执行

  • 和刚才不一样了
    • 确实能执行了!哈哈!

编辑

  • 不过看起来不是按照python程序来执行的
    • 而是按照执行zsh批处理命令的方式执行的
  • 如何直接运行python程序呢?
    • 先搜索吧

进行搜索

编辑

提示是这样的

编辑

  • 总共分 3 步:
    • 第 1 步 确认python3文件位置
      • python3 好像在 /usr/bin/
      • python3 就是sleep.py文件正确的打开方式
    • 第 2 步 编辑文件
      • 设置文件自动用/usr/bin/python3打开
    • 第 3 步 运行py文件
  • 我们先确认python3的位置

python3的位置

  • 如果想要sleep.py能自动执行
    • 必须要明确这个py文件的打开方式
      • python3 来打开执行
    • python3 在哪?
      • which python3?
      • 就是 /usr/bin 下的 python3
      • 注意 usr 不是 user

编辑

  • 下面要编辑sleep.py
    • sleep.py 第一行设置
    • 自动打开方式为/usr/bin/python3

添加文件头

  • 最上面的一句以 # 开头
#!/usr/bin/python3
import time
while True:
    print(time.asctime())
    time.sleep(1)
  • # 的意思是 注释
    • 这句不用执行
    • !/usr/bin/python3
      • 这个设置了当前文件(sleep.py)的执行方式

编辑

  • 准备运行
  • :wq保存并退出vim

保存并运行

  • 依然使用 ./sleep.py
    • . 指的是当前路径
    • /指的是当前路径下

编辑

  • 执行成功!!!
    • ?
  • 跳出循环的快捷键仍然是
    • ctrl+c

总结