Shell 简介
Shell 是一种命令行解释器,能让用户和操作系统内核交互,Shell 脚本常用于系统管理、执行系列命令和处理文本数据。
Shell 的主要特点:
- 简单易用,学起来不难,做基本系统操作方便。
- 常用于系统管理,像文件、进程、用户管理等。
- 能把命令写成脚本,自动执行。
- 能直接用系统命令和工具。
【案例】可以用 Shell 写个每天定时备份重要文件的脚本:
bash
#!/bin/bash
# 备份目录
BACKUP_DIR="/backup"
SOURCE_DIR="/data"
# 创建备份目录(如果不存在)
if [! -d "$BACKUP_DIR" ]; then
mkdir -p "$BACKUP_DIR"
fi
# 执行备份
tar -czf "$BACKUP_DIR/$(date +%Y%m%d).tar.gz" "$SOURCE_DIR"
Python 简介
Python 是高级编程语言,优点很多,像语法简单清晰、有丰富的库、能跨平台、支持面向对象编程。
Python 的优点包括:
- 语法简洁清晰:代码可读性强,易于理解和维护。
- 丰富的库:拥有大量的第三方库,如 NumPy、Pandas、matplotlib 等,能够快速实现各种功能。
- 跨平台:可以在多种操作系统上运行,无需修改代码。
- 面向对象:支持面向对象编程,提高代码的可扩展性和可维护性。
【案例】用 Python 可以实现一个简单的 Web 服务器:
# 导入 http.server 模块,用于处理 HTTP 请求
import http.server
# 导入 socketserver 模块,提供网络服务器的基础架构
import socketserver
# 设置服务器监听的端口为
PORT =
# 定义处理 HTTP 请求的处理器
Handler = http.server.SimpleHTTPRequestHandler
# 创建一个基于 TCP 的服务器,并指定地址和端口以及处理器
with socketserver.TCPServer(("", PORT), Handler) as httpd:
# 打印服务器正在监听的端口信息
print(f"Serving at port {PORT}")
# 启动服务器,使其持续运行并处理请求
httpd.serve_forever()
这个脚本能创建一个简单的 HTTP 服务器,在本地监听 端口,处理 HTTP 请求。比如做简单文件共享、测试网页或者做些 HTTP 开发调试很有用。
Shell 的局限和缺点
- 性能一般,处理大数据和复杂计算不太好。
- 语法灵活但复杂脚本时不好维护和阅读。
- 处理结构化和复杂数据操作不如 Python 这类专门语言。
- 没有像 Python 里的丰富数据结构。
Python 的局限和缺点
- 运行速度比 C、C++ 这类编译型语言慢,计算密集型任务不太适合。
- 内存消耗可能多,有些内存受限环境不太好。
- 移动开发支持一般,不如 Java、Swift 这些专门语言。
Shell 的适用场景
- 系统管理和运维,像文件操作、进程管理、设置环境变量,比如定期清理过期日志文件。
- 写简单自动化脚本,执行重复命令,比如每天自动备份特定目录文件。
- 和操作系统交互,快速获取系统信息、执行系统命令。
Python 的适用场景
- 数据科学和分析,用 Pandas、NumPy 处理大量数据,比如分析销售数据。
- Web 开发,用 Django、Flask 做网站和应用,比如建个在线博客平台。
- 科学计算和模拟,在物理、数学领域做复杂计算和模拟,比如模拟天体运动。
- 人工智能和机器学习,用 TensorFlow、PyTorch 训练模型,比如训练图像识别模型。
- 开发日常小工具,实现有逻辑的实用功能,比如做个自动转换文件格式的工具。
Python 脚本的版本要求
Python 脚本在版本上是有要求的,不同版本在语法、内置函数、库兼容性上可能不同。新特性和语法旧版本可能不支持,第三方库也可能对版本有要求。要是把脚本部署到只支持特定版本(比如 )的服务器,开发时就得用这个版本或兼容的,别用高版本才有的特性。
解决 Python 脚本版本兼容性问题的方法:
- 用 __future__ 模块,能在旧版本里用新版本的特性,比如在 Python 2 里用 Python 3 的除法行为。
from __future__ import division
- 条件导入,根据版本不同导入不同模块或执行不同代码块。
import sys
if sys.version_info[0] == 2:
import some_module_v2 as some_module
elif sys.version_info[0] == 3:
import some_module_v3 as some_module
- 遵循向后兼容性原则,多用通用稳定的语法和函数,别用被弃用或版本变化大的。
- 用专门的库,像 six 能解决 Python 2 和 3 的兼容性问题。
- 做版本检测和适配,在脚本开头检测版本,按版本执行相应逻辑。
- 用虚拟化和容器化技术,像 virtualenv 或 Docker 保证特定一致的版本环境。
- 多做测试,在多个版本上测试确保兼容性。
- 重构代码,让它在不同版本都能简单清晰实现功能。
判断 Python 脚本是否需要解决版本兼容性问题的方法:
- 确定运行环境,要是脚本要在可能有不同 Python 版本的环境(比如不同服务器)运行,就得考虑兼容性。
- 检查用的特性和库,要是用了特定版本的新特性或库对版本有要求,可能有兼容性问题。
- 参考项目需求和规范,要是规定支持多个版本或不同操作系统(默认版本不同),就得处理兼容性。
- 与其他代码集成时,要是其他代码基于不同版本开发,可能有兼容性问题。
- 看社区和用户反馈,开源或面向大众的脚本,收到某些版本运行出错的反馈,就是有兼容性问题。
- 考虑行业趋势和常见场景,像数据科学领域可能同时用 Python 2 和 3,这种情况就得注意兼容性。
查阅 Python 模块消息的途径
- Python 官方文档,最权威全面,能查到模块的功能、用法、参数、返回值等。
- 在线教程和博客,像菜鸟教程、廖雪峰的教程。
- 代码托管平台,比如 GitHub 项目的 README 里可能有模块说明。
- 问答社区,像 Stack Overflow 能搜到模块相关问题和解答。
- Python 集成开发环境(IDE)的文档提示,像 PyCharm 会在导入模块和用函数时提供提示。
适合 shell 初学者的在线教程网站
- 菜鸟教程,有基础的 shell 教程,包括基础知识和运行方法。网址:https://www.runoob.com/linux/linux-shell.html
- 知乎专栏,黑马程序员 shell 视频教程,讲得通俗易懂。链接:https://zhuanlan.zhihu.com/p/
- tutorialspoint,学习各种编程语言的网站,里面的 shell 教程适合新手。网址:https://www.tutorialspoint.com/unix_shell/index.htm
- Linux 命令行,免费在线书网站,介绍 Linux 命令行和 shell 编程知识。教程地址:https://www.linuxcommand.org/lc3_learning_the_shell.php
- Bash 黑客维基,社区驱动的维基网站,有很多 Bash 编程的信息、教程和技巧。网址:https://bash-hackers.org
- Codecademy,有交互式课程教命令行和 shell 脚本编程。课程链接:https://www.codecademy.com/learn/learn-the-command-line
- Coursera 和 EdX,可能有 shell 编程相关课程,有不同层次的。Coursera 网址:https://www.coursera.org/ ;EdX 网址:https://www.edx.org/
适合 Python 初学者的在线教程网站及地址
- 廖雪峰 Python3 教程:https://www.liaoxuefeng.com/wiki/ 由廖雪峰编写,介绍 Python3 语法、函数、模块等,有实例练习。
- 菜鸟教程 Python3 教程:https://www.runoob.com/python3/python3-tutorial.html 涵盖基础语法、函数、模块,有实例练习。
- Python 官方文档:https://docs.python.org/zh-cn/3/ 是学习 Python 必备,有语言规范、标准库和第三方库等,有参考示例,对进阶学习也有用。
- 实验楼 Python 教程:https://www.lanqiao.cn/courses/?tag=python 基于实验和项目,涵盖语法、数据结构、Web 开发、数据分析等,有在线实验环境和项目。
- Codecademy Python 课程:https://www.codecademy.com/learn/learn-python-3 通过互动实践帮掌握语法、函数、循环等,有反馈和社区支持。
- Python123:https://python123.io 提供基础、Web 开发、数据分析教程,有代码实战和视频课程,内容全面,操作方便。
- dida100-Python 学习笔记:http://www.dida100.com/its 有丰富学习资源,包括语法、数据类型、函数、模块、Web 开发、数据分析等,有课程、练习题和实践项目。
- w3school:http://www.w3school.com.cn/ 资源免费,实例丰富内容全,有测试,还有其他编程语言和 HTML 标签内容。
- pythoncodeexample:https://www.programcreek.com/python/ 英文网站,收集大量 Python 模块实例,能搜索查找。
- learnpython:https://www.learnpython.org/ 有初级和高级用法,教程分组有序。