一、判断文件内容改变:
例子:hashlib.md5(open(name_path[m]).read().encode('utf-8')).hexdigest()
在进行md5哈希运算前,需要对数据进行编码。在不同版本的Python下结果不同:
# python2
pwd = "xxx" + chr(163) + "fj"
checkcode = hashlib.md5(pwd).hexdigest()
print checkcode # ea25a328180680aab82b2ef8c456b4ce
# python 3先不解码,直接去编码
import hashlib
pwd = "xxx" + chr(163) + "fj"
checkcode = hashlib.md5(pwd).hexdigest()
print(checkcode)
# 运行时报错 Traceback (most recent call last):
# File "D:/pyProjects/gittest/scheduled_tasks/test.py", line 4, in <module>
# checkcode = hashlib.md5(pwd).hexdigest()
# TypeError: Unicode-objects must be encoded before hashing
# python3 先解码,再编码
pwd = "xxx" + chr(163) + "fj"
checkcode = hashlib.md5(pwd.encode("utf-8")).hexdigest()
print(checkcode) # b517e074034d1913b706829a1b9d1b67
扩展:
如果是中文字符,在Python中是以unicode存在的,在hash前要求进行编码转换,是因为同一个字符串在不同的编码体系下有不同的值,为确保不发生歧义必须要进行一次显性转换。先解码,再在进行md5哈希运算前,对数据进行编码。
hashlib.md5(data.encode("gb2312"))
二、git撤销与回滚
- git commit前,未添加到暂存区的撤销(没有git add)
git checkout -- filename
想将多个文件一次性撤销可以用
git checkout -- . - git commit前,添加到暂存区的撤销(git add 以后)
git reset HEAD filename
想一次性将所有暂存区文件撤销回来
git reset HEAD
3.git commit后
(1)git revert commitid (撤销这一次提交操作,这次操作前后的提交记录都会保留)
然后推送到远端更新远程仓库代码,就撤销回来了。
注意revert奇数次生效,偶数次又回到之前的修改状态。比如一个文件内容是a,那么修改为ab,revert后文件变成了a,如果再revert后文件又还原成ab了。
(2)想回到之前某个版本,可以用reset命令,可以回退到某次提交,那该提交之后的提交都会回滚
git reset --hard commit_id
--hard 强制将缓存区和工作目录都同步到你指定的提交/分支
三、Git保留本地Log文件夹,删除远端的
git rm - r --cached 要删除的文件夹名称
image.png
四、python直接使用git库
方式之一:通过git实例使用git命令
from git import Repo
repo = Repo("./")
git = repo.git
# 如使用 git fetch --all
# 如 使用 git reset --hard origin/master
print(git.fetch('--all'))
git.reset('--hard', 'origin')
五、format格式化函数:
通过 {} 和 : 来代替以前的 %
add= ['1.py', '2.py', '4.py']
then = ['3.py']
clear= {'one':'9.py','two':'8.py'}
print('{one}--{two}'.format(**clear))
print('{0[0]}--{1[0]}'.format(add,then))
# 输出9.py--8.py
# 1.py--3.py
# print('新加了%s' % add)
# print('新加了{}'.format(add))
# 位置参数,引用时第一个引用位置引用add[0]
# print('新加了{}--{}--{}'.format(*add))
#:[填充字符][对齐方式 <^>][宽度]
print('{:*>10}'.format(10)) #输出********10
print('{1:~^6}'.format(10,8)) #~~8~~~
# eval('os.system("rm ddd.py")') #执行一个字符串表达式,并返回表达式的值
print(eval('[1,2,3]')) #也可以还原字符串里面内容的原本类型和内容