公告:九九网站目录为广大站长提供免费收录网站服务,会员可在线完成投稿无需添加友情链接。只收录内容正规合法的网站;快审网站软文10元

点击这里在线咨询客服
新站提交
  • 网站:8485
  • 待审:14
  • 小程序:9
  • 文章:3613
  • 会员:21224

 

给(程序员)10个非常有用的任务自动化脚本

首先,为多平台运行做准备工作(在Windows、Mac和Linux)

下载安装:10个小脚本的构建,其中包含一个Python版本和下面列出的所有工具,你可以自己进行安装测试。

使用一个叫“Power脚本”的在Windows上安装state tool:

IEX(New-Object Net.WebClient).downloadString(https://platform.activestate.com/dl/cli/install.ps1)

如果你用的是Linux / Mac,则安装state tool:

sh <(curl -q https://platform.activestate.com/dl/cli/install.sh)

运行以下命令以下载构建并将其自动安装到虚拟环境中:

state activate Pizza-Team/Top-10-automatable-tasks

其实不复杂,搞定上面的就可以从‘脚本1’到‘脚本10’如数家珍啦啦啦啦:

第1/ 检查json的脚本

下面脚本用于会读取一个文件,然后,脚本或者是将这个文件作为有效的JSON文件传递,要不就直接“死掉”;不管怎么着,它都会给我两个结果中的一个,即 1)错误是出现在这个文件中的 2)出现在我要把文件加载的那个程序中的。

import os import sys import json if len(sys.argv) > 1: if os.path.exists(sys.argv[1]): file = open(sys.argv[1], "r") json.load(file) file.close() print("Validate JSON!") else: print(sys.argv[1] + " not found") else: print("Usage: checkjson.py <file>")

把它跑起来:

$ checkjson test.json

就这么简单,以上就是检查验证JSON需要做的,不但如此,这个脚本改改还可以用来以验证yaml!:)

第2/ 检查yaml的脚本

在如果不让yaml解析失败的情况下,Kubernetes非常难搞,好的,下面这个工具就是是一种有效验证yaml的方法。

import os import sys import yaml if len(sys.argv) > 1: if os.path.exists(sys.argv[1]): file = open(sys.argv[1], "r") yaml.safe_load(file.read()) file.close() print("Validate YAML!") else: print(sys.argv[1] + " not found") else: print("Usage: checkyaml.py <file>")

把它跑起来:

$ checkyaml.py test.yaml

既然我们json和yaml的验证可以有,要不要探索下在它们间进行转换?

第3/ json转到yaml的脚本

假设你使用配置文件,或者需要通过API暴露yaml,这样,可能会发现你需要将文件从json转换为yaml。可以把输出结构要么发送到stdout或是一个指定的文件。

import json import os import sys import yaml # Checking there is a file name passed if len(sys.argv) > 1: # Opening the file if os.path.exists(sys.argv[1]): source_file = open(sys.argv[1], "r") source_content = json.load(source_file) source_file.close() # Failikng if the file isnt found else: print("ERROR: " + sys.argv[1] + " not found") exit(1) # No file, no usage else: print("Usage: json2yaml.py <source_file.json> [target_file.yaml]") # Processing the conversion output = yaml.dump(source_content) # If no target file send to stdout if len(sys.argv) < 3: print(output) # If the target file already exists exit elif os.path.exists(sys.argv[2]): print("ERROR: " + sys.argv[2] + " already exists") exit(1) # Otherwise write to the specified file else: target_file = open(sys.argv[2], "w") target_file.write(output) target_file.close()

把它跑起来:

$ json2yaml.py input_file.json output_file.yaml

但是问题来了,如果我们需要从yaml到json转,怎么破?

第4/ yaml转到json的脚本

这个脚本将文件从yaml转换为json,可以把输出结果发送到stdout或指定的文件。

import json import os import sys import yaml # Checking there is a file name passed if len(sys.argv) > 1: # Opening the file if os.path.exists(sys.argv[1]): source_file = open(sys.argv[1], "r") source_content = yaml.safe_load(source_file) source_file.close() # Failikng if the file isnt found else: print("ERROR: " + sys.argv[1] + " not found") exit(1) # No file, no usage else: print("Usage: yaml2json.py <source_file.yaml> [target_file.json]") # Processing the conversion output = json.dumps(source_content) # If no target file send to stdout if len(sys.argv) < 3: print(output) # If the target file already exists exit elif os.path.exists(sys.argv[2]): print("ERROR: " + sys.argv[2] + " already exists") exit(1) # Otherwise write to the specified file else: target_file = open(sys.argv[2], "w") target_file.write(output) target_file.close()

同样,把它跑起来:

$ yaml2json.py input_file.yaml output_file.json

第5/ 转成jpg图片的脚本

有没有这样的情况——你不得不面对一个比较陈旧的后台管理系统,假设有图片要上传,发现这些古董级的系统只接受jpeg格式,但对较新的格式如PNG或HEIC就......好吧,要解决此问题,这里有一个快速实用程序,它将接受输入的文件并将输入文件并转换为使用相同基本名称的.jpg。

import os import sys from PIL import Image if len(sys.argv) > 1: if os.path.exists(sys.argv[1]): im = Image.open(sys.argv[1]) target_name = sys.argv[1] + ".jpg" rgb_im = im.convert(RGB) rgb_im.save(target_name) print("Saved as " + target_name) else: print(sys.argv[1] + " not found") else: print("Usage: convert2jpg.py <file>")

把它跑起来:

$ convert2jpg test.png

但你会说,这种情况貌似很极端嘛,有更常见点的嘛?走起,那么比上述处理图形文件更常见的是把信息复制到“剪贴板”,或者是从”剪贴板“粘贴信息,你会问,有没有一办法,让我不必每次都打开编辑器呢?

第6/ 复制到“剪贴板“

将文本文件的内容复制到剪贴板是常事儿对吧~,这样的复制场景可能是 1)日志文件 2)配置文件 3)ssh密钥。用命令行去到文件非常容易,但程序员比一般人要懒对吧.....打开编辑器复制粘贴都想省略,那么下面copy2clip的脚本对于Windows还是Mac都两相宜,它实际上是把Python代码卷到本机功能里,这样就可以实现文件载入到剪贴板中。

import os import sys import platform import subprocess # Seeing if the file exists if os.path.exists(sys.argv[1]): f = open(sys.argv[1], "r") f_contents = f.read() f.close() else: print("Usage: copy2clip <file_name>") exit(1) whatos = platform.system() if whatos == "Darwin": subprocess.run("pbcopy", universal_newlines=True, input=f_contents) print("success: copied to clipboard") elif whatos == "Windows": subprocess.run("clip", universal_newlines=True, input=f_contents) print("success: copied to clipboard") else: print("failed: clipboard not supported")

把它跑起来:

$ copy2clip filename

现在,我们知道了如何更快、更轻松地复制和粘贴文件内容,趁热打铁,举一反三,让我们把它也应用到文件名上。

第7/ cwd

在linux和mac操作系统上,获取当前工作目录很容易,得益于它作为pwd命令内置在shell里的,不过pwd是POSIX环境变量,意味着它没法用在Windows系统上,因此,我们可以使用名为cwd的命令,这样如果我们选择在Mac或Linux上使用它,则该命令不会受到干扰,但主要针对Windows。

单独运行cwd会显示当前工作目录,如果传递-c ,它将自动将当前工作目录复制到Mac或Windows上的剪贴板中,从而节省了大量重新键入和鼠标移动的操作。

再有,我们可以把文件名作为参数传递,并将其完整路径复制到剪贴板,这是在运行测试用例时常会要做的。

import os import sys import platform import subprocess # No extra arguments are good if len(sys.argv) == 1: copy_to_clipboard=False file_name = "" # Checking if there is one extra argument elif len(sys.argv) == 2: if sys.argv[1] == "-c": copy_to_clipboard=True file_name = "" elif os.path.exists(sys.argv[1]): file_name = sys.argv[1] copy_to_clipboard=False else: copy_to_clipboard=False file_name = "" # Checking if there are two extra arguments elif len(sys.argv) == 3: # Checking if the non-file value is set correctly if sys.argv[1] == "-c" or sys.argv[2] == "-c": copy_to_clipboard=True else: print("Usage: cwd [-c] [file_name]") exit(1) # Checking if the file exists before if os.path.exists(sys.argv[1]): file_name = sys.argv[1] elif os.path.exists(sys.argv[2]): file_name = sys.argv[2] else: print("Usage: cwd [-c] [file_name]") exit(1) # More than two extra are bad else: print("Usage: cwd [-c] [file_name]") exit(1) # If file_name is setup then get abspath otherwise get cwd if len(file_name) >= 1: full_path = os.path.abspath(file_name) else: full_path = os.getcwd() # If clipboard is setup add it to clipboard on Windows or Mac if copy_to_clipboard == True: whatos = platform.system() if whatos == "Darwin": subprocess.run("pbcopy", universal_newlines=True, input=full_path) output = full_path + " (copied to clipboard)" elif whatos == "Windows": subprocess.run("clip", universal_newlines=True, input=full_path) output = full_path + " (copied to clipboard)" else: output = full_path + " (clipboard not supported)" else: output = full_path # Displaying output print(output)

把它跑起来:

user@macbook ~ % cwd.py -c cwd.bat /Users/Demo/python-scripts/cwd.bat (copied to clipboard

下面我们可以换换口味,带入“数学问题”。

第8/ 快算

这个脚本用来在单个命令行中进行多个数字的相加(也可以减、乘、除)。这你比我要清楚,开发中时不时得做点计算,谁都不想为这还要打开Excel吧。

import math import sys if len(sys.argv) < 4: print("Usage: quickmath.py <add|mul|div|sub|avg> <num01> <num02> [num03..num99]") exit(1) w_addition = {"+", "add", "addition", "plus"} w_subtraction = {"-", "sub", "subtraction", "minus"} w_multiply = {"*", "x", "mul", "multiply"} w_divide = {"/", "div", "divide"} for counter in range(2, len(sys.argv)): if not sys.argv[counter].isdigit(): print("Usage: quickmath.py <add|mul|div|sub|avg> <num01> <num02> [num03..num99]") exit(1) result = float(sys.argv[2]) if sys.argv[1] in w_addition: for counter in range(3, len(sys.argv)): result = result + float(sys.argv[counter]) elif sys.argv[1] in w_subtraction: for counter in range(3, len(sys.argv)): result = result - float(sys.argv[counter]) elif sys.argv[1] in w_multiply: for counter in range(3, len(sys.argv)): result = result * float(sys.argv[counter]) elif sys.argv[1] in w_divide: for counter in range(3, len(sys.argv)): result = result / float(sys.argv[counter]) else: print("Usage: quickmath.py <add|mul|div|sub|avg> <num01> <num02> [num03..num99]") exit(1) print(str(result))

把它运行起来:

$ quickmath add 2 10 18

在快算的基础上,下面还可以做些货币的换算。

第9/ 货币换算

你以往可能有用浏览器查询汇率的经历,虽然次数不一定很多,不过的确也可以自动化下,即自动查找两种货币之间的当前汇率。

import json import sys import urllib.request if len(sys.argv) != 3: print("Usage: ./currencyrates.py lookup_currency base_currency. Example: ./currencyrates.py usd cny") sys.exit() currency = sys.argv[1] basecurrency = sys.argv[2] currencyurl = "http://freecurrencyrates.com/api/action.php?do=cvals&iso=" + currency + "&f=" + basecurrency + "&v=1&s=cbr" f = urllib.request.urlopen(currencyurl) obj = json.loads(f.read()) result = "1 " + currency.upper() + " is " result+="{:,.2f}".format(1/obj[currency.upper()]) + " " + basecurrency.upper() print(result);

运行起来:

$ currency usd cny

如果兑换北约国家呢?

第10/ 北约多国(换算)

到这里,其实,这就只是图个好玩了,这个脚本使用北约制式字母拼出一个单词。

import sys nato_alphabet = { a: alpha, b: bravo, c: charlie, d: delta, e: echo, f: foxtrot, g: golf, h: hotel, i: india, j: juliet, k: kilo, l: lima, m: mike, n: november, o: oscar, p: papa, q: quebec, r: romeo, s: sierra, t: tango, u: uniform, v: victor, w: whiskey, x: x-ray, y: yankee, z: zulu } try: sys.argv[1] except: print("Usage: natoalphabet.py <word>") exit(1) for letter in sys.argv[1]: if letter.lower() not in nato_alphabet: print(letter) else: print(nato_alphabet[letter])

对的,还是把它运行起来!

$ natoalphabet automate a - alpha u - uniform t - tango o - oscar m - mike a - alpha t - tango e - echo

分享到:

  admin

注册时间:

网站:0 个   小程序:3 个  文章:0 篇

  • 485

    网站

  • 9

    小程序

  • 3613

    文章

  • 224

    会员

赶快注册账号,推广您的网站吧!
热门网站
最新入驻小程序

跳一跳2022-08-22

跳一跳是微信开发的一款小游戏,有

数独大挑战2018-06-03

数独一种数学游戏,玩家需要根据9

答题星2018-06-03

您可以通过答题星轻松地创建试卷

全阶人生考试2018-06-03

各种考试题,题库,初中,高中,大学四六

运动步数有氧达人2018-06-03

记录运动步数,积累氧气值。还可偷

每日养生app2018-06-03

每日养生,天天健康