前提条件:配置ssh免密码登陆 通过 SSH 运行命令的问题在于,通常您必须自己键入它们或上传脚本文件。但是,通过一些 bash 知识,您可以通过 SSH 传递整个脚本,而无需.sh 在远程计算机上保存该文件。 解决方案:通过标准输入传递脚本 SSH 命令有一种模式,您可以在其中在远程服务器上运行任何单个命令。为了运行多个命令,您必须使用以下技巧: 1ssh user@remotehost 'bash -s' < script.sh 该bash -s 命令的意思是“在新的 bash 会话中执行以下命令”。该-s 标志使其从标准输入读取,该< script.sh 位将本地脚本文件读入标准输入。 该文件完全在本地读取,并且全部发送到远程服务器而无需上传任何内容。这确实需要您将所有命令放入一个单独的脚本文件中。 一条指令ssh $ip "ls /home/" 在脚本中运行许多远程命令 如果您想在另一台服务器上运行 shell 脚本的一部分,而不是全部,您可以在脚本中包含如下嵌套块: 123456789101112131415161718ss ...
Python
未读安装 pip install loguru 简单使用 123456import loguruloguru.logger.info('info')loguru.logger.debug('debug')loguru.logger.error('error')loguru.logger.warning('warning') 默认的输出格式是包含【时间、级别、模块名、行号以及日志信息】,不需要手动创建 logger ,直接使用即可,另外其输出还是彩色的,看起来会更加友好。 保留日志文件 一般情况,我们都需要将日志输出保存到文件中,loguru直接通过 add() 方法,就可以配置一个日志文件 12345678910111213import loguru## 保留日志文件loguru.logger.add("interface_log_{time}.log", rotation="500MB", ...
Python
未读原文链接:刘江的博客教程 既然有压缩模块zipfile,那有一个归档模块tarfile也是很自然的。tarfile模块用于解包和打包文件,包括被gzip,bz2或lzma压缩后的打包文件。如果是.zip类型的文件,建议使用zipfile模块,更高级的功能请使用shutil模块。 定义的类和异常 tarfile.open(name=None, mode=‘r’, fileobj=None, bufsize=10240, \**kwargs) 返回一个TarFile类型的对象。本质上就是打开一个文件对象。Python随处可见这种文件对象类型的设计,你很容易就明白,不是吗? name是文件名或路径。 bufsize用于指定数据块的大小,默认为20*512字节。 mode是打开模式,一个类似filemode[:compression]格式的字符串,可以有下表所示的组合,默认为“r”。 模式 说明 ‘r’or’r:*’ 自动解压并打开文件(推荐模式) ‘r:’ 只打开文件不解压 ‘r:gz’ 采用gzip格式解压并打开文件 ‘r:bz2’ 采用bz2格式解压并打开 ...
又很多添加水印的方法,如opencv模块、PIL模块但是感觉都较为复杂,filestools模块其本质上也是对ImageDraw.Draw.text()方法做了进一步的封装,让我们用起来更加的简便。 filestools模块 /usr/local/bin/pip3 install filestools -i https://pypi.douban.com/simple/ # 安装 我们使用add_mark()方法可以生成数量较多的水印,该方法有8个参数,比较重要的有 mark:水印的内容 水印样式包括color、size、opacity、space、angle:颜色、大小、不透明度、空间、角度 123456789101112131415import osfrom watermarker.marker import add_mark # 添加水印模块def update_img(dir,water_name): try: if not dir and water_name: print("文件夹地址或水印名称不能为空") return for ...
不墨迹时间,直入正题看glob模块,fnmatch参考 python中可以使用 glob 模块实现快速查找文件 glob像是一个更强大版本的listdir()函数,支持使用模式匹配来搜索文件,其支持的通配符有:*,匹配任意0个或多个字符;**,当recursive参数为True时会匹配0个或多个子文件夹(且只能用于匹配子文件夹);?,匹配任意一个字符;[],匹配指定范围内的字符,如[0-9]匹配任意数字。 若需要全局搜索,则需启用recursive递归参数为True。 12# 超着qqq目录下所有深层目录下的后缀为png的文件,单层目录recursive=Falseprint(glob.glob("/Users/jerry/Downloads/qqq/**/*.png",recursive=True)) fnmatch 这篇文章主要分享的是python使用技巧查找文件,下面我们就来介绍针对python查找文件的相关内容,需要的小伙伴可以参考一下 标准库的fnmatch库专门用来进行文件名匹配,支持使用通配符进行字符串匹配。 1、fnmatch:判断文件名是否符合特 ...
安装 去官网下载对应的系统版本 Conda官网:Conda Documentation MiniConda官网:Miniconda — Anaconda documentation 管理conda 1. 验证conda已被安装 1conda --version 终端上将会以 *conda 版本号* 的形式显示当前安装conda的版本号。如: *conda 3.11.0* 注意:如果出现错误信息,则需核实是否出现以下情况: ① 使用的用户是否是安装Anaconda时的账户。 ② 是否在安装Anaconda之后重启了终端。 2. 更新conda至最新版本 1conda update conda 执行命令后,conda将会对版本进行比较并列出可以升级的版本。同时,也会告知用户其他相关包也会升级到相应版本。 当较新的版本可以用于升级时,终端会显示 *Proceed ([y]/n)?* ,此时输入 *y* 即可进行升级。 3. 查看conda帮助信息 1conda --help 或 1conda -h 4. 卸载conda ① Linux 或 macOS 1rm -rf ~/anacon ...
6bfaebf3e9f67b5202b8d6c1cdcd16f76f4995a53064e82dce41b4e92775dd9b8de9ca1d948b6dd68cc03b58783474c681433ac48d2433d25b7a6caec859b1bea3d5f85a3377a74a0549a9bff37f0a244e050fd3cb933166f014849adcee595bc2ee58229d5ad8ef205c2cd516db45734eaf72063b160af5a60913e21f28aa56d429d729d6619827811f51ce1bc502b86fcb2c3a57c2eda798aa1820e51c67f3d5a5d166b6e6011929894cfcf2aae880fd2df5e02f0424ddfb40cf66a82ce644fbe7dda3d1ac35e74fee696618ef8f4d04501b9060d2fdad59352c8f35343e0c9251d0b97352dd494057d555844ac70ca864555f5c58e81e0 ...
6bfaebf3e9f67b5202b8d6c1cdcd16f79992a0599d38b205714801b0a947bd6b957478d06db44fa76763a9945802a5127cae4d3bdd6ea953bb8b349cd7e914f21c3da135118399788434489a683991104212168ef0bc393bc15c54829125fae30dd26920aebab5c19f001cc0a7d4865075bf0fab6fe468f687105b5cfa9d626029941595199f8f225c7c6ea1df90da3bcd5b5c7dc2a2b9a53ff0412908f1bfb0381a8f79996ea7e9656eb79d740f455e0ebf8d792e0fec2b89524361e37be7ef1c80717624e39129e33ef826a916c375468395cf8a7c66573da8d4057f1febf32395b49a76c9d40c0e68e3da7800e8c4e9f44008fa2a8b0b9 ...
Django REST framwork 提供的视图的主要作用: 控制序列化器的执行(检验、保存、转换数据) 控制数据库模型的操作 REST framework 提供了众多的通用视图基类与扩展类,以简化视图的编写。 两个视图基类 APIView 1rest_framework.views.APIView APIView是REST framework提供的所有视图的基类,继承自Django的View父类。 APIView与View的不同之处在于: 传入到视图方法中的是REST framework的Request对象,而不是Django的HttpRequeset对象; 视图方法可以返回REST framework的Response对象,视图会为响应数据设置(render)符合前端要求的格式; 任何APIException异常都会被捕获到,并且处理成合适的响应信息; 在进行dispatch()分发前,会对请求进行身份认证、权限检查、流量控制。 支持定义的属性 authentication_classes 列表或元祖,身份认证类 permissoin_classes 列表或元祖,权限 ...
序列化器-Serializer 序列化,序列化器会把模型对象转换成字典,经过response以后变成json字符串 反序列化,把客户端发送过来的数据,经过request以后变成字典,序列化器可以把字典转成模型 反序列化,完成数据校验功能 1.定义序列化器 Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serializer。 接下来,为了方便演示序列化器的使用,我们先创建一个新的子应用sers 1python manage.py startapp sers 在settings.py注册sers 1234INSTALLED_APPS = [ .... 'sers',] 我们创建几个图书相关模型 1234567from django.db import models# Create your models here.class Book(models.Model): title = models.CharField(max_length=32,verbose_n ...