跨平台自动化工具开发:Python环境安装与配置指南

在开发过程中,我们经常需要编写一些自动化的工具,例如:
但是如果我们要进行跨平台的开发,那么依据每个平台去开发一套功能相同的自动化脚本,显然不是最为理想的选择。而选择跨平台通用的脚本则是更好的做法。其中,Python 就是经常被用来编写自动化工具的跨平台脚本语言。
Python 环境安装: 1.资源下载:
到 Python 官网去下载安装包,它有 2.x 和 3.x 这两个分支。这两个分支之间存在着巨大的差别。如今比较流行的是 2.7.x 系列。在这里,我直接下载了此系列的最新版本,即 python-2.7.13.msi 。
2.安装步骤:
过程很简单。首先双击打开安装包,接着一直点击 Next 按钮,直到安装完成。要记得记录一下它的安装目录,因为后面配置系统环境时会用到。
3.环境配置:
首先打开计算机,接着找到属性,再进入高级系统设置,然后找到环境变量……之后在系统变量里新建一项,并设置参数如下:
变量名:PYTHON_HOME
变量值:D:\Develope\Python2.7
接着编辑系统变量里的 Path 变量的参数,将参数值的末尾加上 ;%PYTHON_HOME%;,之后保存所做的编辑内容。随后,开启命令行窗口来查询配置是否成功。
C:\Users\hasee-pc>python --version
Python 2.7.13
以上说明环境变量的配置已完成。
4.运行 Python:
运行 Python 代码块有两种方式。一种是在命令行窗口中输入 Python 指令,从而进入交互式编程窗口。接着可以直接输入代码,通过键盘上的 Enter 键来执行结果,例如:
C:\Users\hasee-pc>python
Python 2.7.13 (v2.7.13 对应的是 a06454b1afa1,时间是 2016 年 12 月 17 日,具体时间为 20 点 42 分 59 秒) [MSC v.1500 32 bit (
Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print "hi,linsh"
hi,linsh
也可以创建一个 .py 脚本,编辑好脚本内容,例如:
# test.py
print "hi,linsh"
接着,需在命令行中找到脚本所处的目录,接着执行该脚本,以下这两种执行方式都是可行的:
D:\Develope\PythonProjects>python test.py
hi,linsh
D:\Develope\PythonProjects>test.py
hi,linsh
# 号用于对单行进行注释。多行注释通常以三引号 ''' 或者 """ 开始和结束。
Python 基础语法:
这里不会详细阐述过多关于语法的细节,只是简要讲述一些必需的基础语法。若想了解更详细的内容,可以参考【Python 语言参考】。
1.特殊标识符: 2.缩进和代码块:
Python 与其他语言存在最大的不同之处。它不像其他语言那样使用 {} 来包裹一个代码块,也不像 Lua 那样使用关键字来包裹代码块以管理类、函数或逻辑判断。Python 是直接通过缩进这一方式来管理模块的。
缩进的空白数量是可以变化的,然而所有代码块语句都必须拥有相同的缩进空白数量。例如:
if True:
print "True"
else:
print "False"
编程工具通常将一次 Tab 键的距离设定为 4 个空格的距离,以此作为一级缩进的空白数。
3.数据类型和变量:
Python 有 5 种标准的数据类型:
Numbers(数字)
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典)
在定义变量时,无需声明变量的类型。变量在使用之前,需要先进行赋值操作。只有在赋值之后,解释器才能根据赋值的类型,为该变量分配创建内存空间并创建此变量。而仅仅只是声明但没有赋值的变量,是无法使用的。例如:
number = 2 # 整型
percent = 100.0 # 浮点型
name = "linsh" # 字符串
此外,还可以同时对多个变量进行赋值:
number,percent,name = 2,100.0,"linsh"
4.函数:
函数的使用具有两个方面的作用,一是能够提高代码的重用性,二是可以增强代码的可读性和模块化。以下是 Python 定义函数的格式:
def funcName(param1,param2,...):
...
用关键字 def 去声明一个函数,接着是函数名(也就是函数标识符),之后是被 () 包围起来的传入参数表,这个参数表可以没有参数,也可以有多个参数,接着用 : 号来开启函数内容的起始。例如:
# test.py
# # -*- coding: utf-8 -*-
# 方法定义
def TestFunc1():
print "test1"
def TestFunc2(num):
print "test2: num = ",num #str 和 int 类型拼接
# 方法调用
TestFunc1()
TestFunc2(66)
执行结果:
D:\Develope\PythonProjects>test.py
test1
test2: num = 66
编写工具: 1.设计目标:
首先说一下我要工具的功能:
遍历某个目录及其子目录中的所有指定后缀文件,接着为这些文件的头部插入指定字符串。
2.使用场景:
设计这种工具的起因是我近期在把之前 CSDN 里的博客搬运到自己的 Hexo 博客空间上。大家应该清楚,要是都用 Markdown 编写的话,搬运时只需在文件头部添加如下一串额外的内容:
---
title: 博客标题
博客的创建时间是(例如:2016 年 9 月 3 日 17 时 15 分 22 秒)
标签有多种,例如[Hexo,Next]等,若有多个标签则用逗号隔开。
categories: 分类(如:Web)
---
此外,要在博客首页仅展示部分内容,而非展开博客的完整内容,就需要在博客中合适的位置插入这个标签,一般是加载第一段内容结束的位置。
3.实现代码:
我们在 source/_posts 目录下创建一个工具脚本,将其命名为 SuitFileToHexo.py ,接着依次进行以下步骤。
这里发现一个问题,即 os.path.isdir(i) 在 2.7.11 这个版本时会莫名其妙地返回 false。要想使其正常,需要进行如下修改:
if file_endStr == '':
i = os.path.join(path, i) #=================〉这一行很必要
# print i
# 判断是否是目录
if os.path.isdir(i):
...
‘’’—
title: ‘’’
展示分隔符 ```` 的插入位置大致逻辑为:在第一个标题之后,且刚好插入在第二个标题之前。用 Markdown 语法撰写的博客标题是用 ``#`` 表示的,最终的插入方法如下:
```python
# 向文件中插入指定数据
添加标签 tags 。
file = open(filePath,"r")
content = file.read()
index 等于 content 从开头到第 40 个字符中查找三个连续的单引号(''')的位置。
title:''')
# 添加
if index == -1:
print 'Undadded'
语言风格需保持原文风格,要去掉最前面的序号,将长句拆分成多个小分句,并且分句要尽可能短,以达到差异最大化的效果,同时要保留原意,禁止修改专有名词,也禁止穿插英文单词,只需要改写结果,无需复述原句,更不要换行以及给出任何解释。
标题:“” + title + “”
date 的值为 +date+ 。
tags 包含了“”+tags+“”。
categories 包含 tags
---
'''
# 检测是否插入部分显示标签
- content 等于 addContent 加上 content 。
index 等于 content 查找三个单引号(''')的位置
if index == -1:
# 获取第一段的位置
index 等于 content 中查找 '''### ''' 的位置
if index != -1:
打印“first ### 位置 = ”,然后加上 index
# 下一个标题位置(在第二个标题之前插入即可)
pos 等于从 content 中 index 位置开始往后找空字符串的位置。
#''',1)
if pos != -1:
index += pos
打印“第二个输入位置 = ”,以及 index 的值
将 content 从开头截取到 index 位置,然后在其后添加三个单引号。
从某个位置开始的内容,即从索引为 index 的位置开始往后的内容。
file = open(filePath,"w")
file.write(content)
else:
打印“文件头部已添加”
# 记得要关闭文件
file.close()
最后完整的调用过程:
# 指定目录
path = './'
# 得到文件列表
files = getFileList(path,'.md')
# 声明一些全局变量
title = ''
date = ''
tags = ''
for i in files:
title = getFileSimpleName(i.decode("string_escape"))
date = get_FileCreateTime(path+i.decode("string_escape"))
tags = getTypeNameByPath(i.decode("string_escape"))
print 'title: '+title
print 'date: '+date
print 'tags: ['+tags+']'
addHeadToFile(path+i.decode("string_escape"),title,date,tags)
其他:
如果你出现了打印中文文件名变成“BATCH\xc5\xfa\xb4\xa6\xc0\xed\xbc\xf2\xbc\xc7.md”这种格式,那么可以参考:Linux 下 Python2.7 解决 list 打印中文字符的问题。
参考资料:
微信公众号「何乐不为呢」,一个码农的技术笔记和唠叨。