python git相关总结

2020-05-18  本文已影响0人  Mikasa___

一、判断文件内容改变:

例子: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撤销与回滚

  1. git commit前,未添加到暂存区的撤销(没有git add)
    git checkout -- filename
    想将多个文件一次性撤销可以用
    git checkout -- .
  2. 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]'))  #也可以还原字符串里面内容的原本类型和内容
上一篇 下一篇

猜你喜欢

热点阅读