一、前言
最近阅读python3-cookbook,里面有一章涉及python来实现脚本编程和系统管理,也就是shell脚本实现的功能。因为这部分目前也没有实际的应用需求,因此这里简单总结,以备以后有需要用到的时候能快速定位到需要用到的知识点。
二、基本内容
1、通过重定向/管道/文件接受输入
2、终止程序并给出错误信息
3.解析命令行选项
推荐使用后面argparse、click、fire
4、运行时弹出密码输入提示
5、获取终端的大小
6、执行外部命令并获取它的输入
7、复制或者迁移文件和目录
import shutil
# Copy src to dst. (cp src dst)
shutil.copy(src, dst)
# Copy files, but preserve metadata (cp -p src dst)
shutil.copy2(src, dst)
# Copy directory tree (cp -R src dst)
shutil.copytree(src, dst)
# Move src to dst (mv src dst)
shutil.move(src, dst)
8、创建和解压归档文件
9.通过文件名查找文件
10、读取配置文件
python中配置配置文件可以直接使用python文件进行配置,可以直接用import引入
使用.ini 文件配置,此时需要configparser模块读取配置文件
使用.yml 文件配置,此时需要使用yaml模块读取配置
11、给简单的脚步增加日志功能
import logging
def main():
# Configure the logging system
logging.basicConfig(
filename='app.log',
level=logging.ERROR
)
# Variables (to make the calls that follow work)
hostname = 'www.python.org'
item = 'spam'
filename = 'data.csv'
mode = 'r'
# Example logging calls (insert into your program)
logging.critical('Host %s unknown', hostname)
logging.error("Couldn't find %r", item)
logging.warning('Feature is deprecated')
logging.info('Opening file %r, mode=%r', filename, mode)
logging.debug('Got here')
if __name__ == '__main__':
main()
12、实现一个计时器
使用time模块进行计时
方案一:使用装饰器实现一个函数运行的计时器
import time
def timer(func):
def wrapper(*args, **kwargs):
start = time.perf_counter()
restult = func(*args, **kwargs)
end = time.perf_counter()
print(end - start)
return restult
return wrapper
@timer
def countdown(n):
while n > 0:
n -= 1
countdown(1000000)
# 0.05622637700002997
import time
class Timer:
def __init__(self, func=time.perf_counter):
self.elapsed = 0.0
self._func = func
self._start = None
# 启动
def start(self):
if self._start is not None:
raise RuntimeError('Already started')
self._start = self._func()
# 停止
def stop(self):
if self._start is None:
raise RuntimeError('Not started')
end = self._func()
self.elapsed += end - self._start
self._start = None
# 重置
def reset(self):
self.elapsed = 0.0
# 获取运行状态
@property
def running(self):
return self._start is not None
# 实现上下文管理 可以使用with
def __enter__(self):
self.start()
return self
def __exit__(self, *args):
self.stop()
# 使用
t = Timer()
t.start()
countdown(1000000)
print(t.running)
t.stop()
print(t.elapsed)
print(t.running)
t.start()
t.reset()
countdown(1000000)
t.stop()
print(t.elapsed)
# 结果
True
0.05854388499983543
False
0.048935402999859434
13.限制内存和CPU的使用量
14.启动一个WEB浏览器