Linux 命令行运行 Python 脚本

1. 安装 Python 解释器

查看Python解释器安装位置:

which python

2. 创建 Python 脚本

这里说下在linux中命令行创建Python脚本

## nano 命令创建 hello.py,里面写一个 print("Hello, World!")
nano hello.py

更多场景是你写个python文件,上传服务器,可以用ftp连接服务器

# 记住自己上传的目录 要填
python3 /root/job.py

3. 运行 Python 脚本

python hello.py

添加参数和选项

  • 命令行中向 Python 脚本传递参数
## 运行 script.py 文件,并将 arg1、arg2 和 arg3 作为参数传递给它
python script.py value1 value2 value3

用sys.argv 对象来获取这些参数和选项。sys.argv 是一个包含命令行参数的列表

  • 第一个元素是脚本的名称
  • 后面的元素是传递给脚本的参数和选项。
import sys
for arg in sys.argv:
    print(arg)
# 会输出下面内容
script.py
value1
value2
value3
  • 命令行中向 Python 脚本传递选项

用选项来运行 Python 脚本

# 运行 script.py,并将 --name 和 --age 选项设置为 Alice 和 30
python script.py --name Alice --age 30
import argparse
# 用 argparse 模块 解析命令行选项
parser = argparse.ArgumentParser()

# 用 add_argument 方法 定义需接受的两个选项
parser.add_argument("--name", help="your name")
parser.add_argument("--age", help="your age")

# 用 parse_args 方法来解析这些选项
args = parser.parse_args()
print(f"Your name is {args.name}")
print(f"Your age is {args.age}")
  • 将输出重定向到文件
## 运行 script.py,将输出重定向到 output.txt 文件
python script.py > output.txt

## 将输出附加到文件中,而不是覆盖它
python script.py >> output.txt
  • 使用管道连接多个命令

用管道 | 将多个命令连接在一起,将使每个命令的输出成为下一个命令的输入。

## 运行 script.py,将其输出发送到 sort 命令进行排序
python script.py | sort

## 运行 script.py,将其输出发送到 grep 命令,搜索包含 "keyword" 的行
python script.py | grep "keyword"

用 Python 脚本自动化任务

Python脚本可以执行很多自动化任务,比如:

  • 数据备份和恢复
  • 更新软件包
  • 管理文件系统
  • 发送电子邮件或短信
  • 服务器管理任务,如日志清理和监控

用 Python 脚本自动化数据备份和恢复

import os
import shutil
import tarfile

def backup(source, destination):
    with tarfile.open(destination, "w:gz") as tar:
        tar.add(source)

def restore(source, destination):
    with tarfile.open(source, "r:gz") as tar:
        tar.extractall(destination)

if __name__ == "__main__":
    # 备份数据
    source = "/home/user/data"
    destination = "/home/user/backup.tar.gz"
    # 将目录压缩成 tar.gz 文件
    backup(source, destination)
    # 恢复数据
    source = "/home/user/backup.tar.gz"
    destination = "/home/user/data-restored"
    # 将 tar.gz 文件解压缩到指定目录
    restore(source, destination)
# 编辑 crontab 文件
crontab -e
# 添加以下行:在每天0点自动运行脚本,将数据备份到指定的目录中
0 0 * * * /usr/bin/python /path/to/backup_script.py

另外一个自动化技巧是编写shell脚本调用 Python脚本:

编写shell脚本调用 Python脚本

1. 编辑shell脚本

## 编辑shell脚本
vim s1.sh

## 要用文件的绝对路径
#!/bin/bash
python3 /root/job.py
echo 'Python脚本执行成功,时间:' >> /root/log
date >> /root/log

## 保存并退出
:wq

2. 将shell脚本转换成可执行文件

chmod u+x /root/s1.sh

# 检测Shell脚本能否正常执行
/root/s1.sh
# 正产输出hello word!
Hello World!

3. 定时执行shell脚本

## 编辑定时任务
crontab -e
## 添加以下任务,每隔1分钟执行1次s1.sh脚本
*/1 * * * * /root/s1.sh
## 1分钟后,/root目录多了个文件log,保存着程序执行的记录
## 查看内容
tail -f /root/log

定时计划设置语法:

python cd 脚本 目录 python脚本在哪里_python cd 脚本 目录


示例:

  • 30 22 * * * 每天22点30分执行命令
  • 0 13 * * 1 每周一下午1点执行命令
  • 0 5 1,10,20 * * 每月的1号,10号和20号的5点执行任务
  • 30 8 * * 1-5 周一到周五的8点30分执行任务