同局域网非USB传文件(递归下载)

背景:公司里为了信息安全把公司电脑的USB插口禁用了,但很多测试文件和代码都是在个人电脑上,需要把个人电脑上的代码迁移到公司电脑上。

(试了下ftp,结果也是失败的)

 

处理方法:

1.个人电脑和公司电脑联网在同一路由

2.个人电脑在对应文件夹下执行

python3 -m http.server 8888 

3.公司电脑在浏览器里输入“http://个人电脑在局域网里ip:8888", 个人电脑在居于网里的ip可以通过ifconfig或ipconfig查看,

4.现在可以通过浏览器单个下载文件了,但是如果数据过多很不方便,所以需要利用python代码递归检查下载

import requests
import re
import os
import sys
from time import sleep

headers = {  'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'}



def help(script):
 text = 'python3 %s https://192.168.0.134:8080' % script
 
 print(text)
def get_file(url,path):##文件下载函数
  content = requests.get(url,headers=headers)
  print("write %s in %s" % (url,path))
  filew = open(path+url.split("/")[-1],'wb')
  for chunk in content.iter_content(chunk_size=512 * 1024): 
    if chunk: # filter out keep-alive new chunks
      filew.write(chunk)
  filew.close()
def get_dir(url,path): #文件夹处理逻辑  
  print('getting_dir',url)
  content = requests.get(url,headers=headers).text
  print(content)
  if "Directory listing for" in content:
    sub_url = re.findall('href="(.*?)"',content)
    #print(sub_url)
    for i in sub_url:
      if "/" in i:      
        i = i.split("/")[0]
        #print(i)
        if i=='.git' or i=='.vscode' or i=='__pycache__':
            continue
        if i!="." and i!="..":
          if not os.path.exists(path+i):
            os.mkdir(path+i)
          sleep(0.1)
          get_dir(url+"/"+i+"/",path+i+"/")
          print("url:"+url+"/"+i+"\nurl_path:"+path+i+"/")
      else:
        get_file(url+"/"+i,path)
  else:
    get_file(url,path)
if __name__ == '__main__':
    
    if not sys.argv[1]:
        help(sys.argv[0])
        exit(0)
    else:
        get_dir(sys.argv[1],"./")

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值