使用python写脚本文件,实现指定文件的copy

要求:

(1)一个目录2000_PCAP,该目录下存放着很多文件;

(2)一个表格(见附件),表格内存放着很多数字;

要求:在2000_PCAP目录下,找出以附件表格“name_list.xlsx”内的数字为开头的pcap文件,并把这些文件拷贝至与2000_PCAP目录同级的2000_PCAP_part1目录下。

解题思路:使用numpy,读取Excel中所有数字,添加到一个新的列表中;

获取指定文件夹下所有文件名(不带后缀,只是数字),添加到另一个新的列表中;

循环文件名列表,去Excel中的数字列表中查找是否存在该数字,这里使用的是二分查找;

若能找到能复制该文件到指定目录下。

大家可以先不看答案,自己尝试一下,该怎么实现

参考答案:

1 导入模块

import pandas as pd

import numpy as np

import os

import shutil

2 读取Excel中所有的数字(没有扩展,只读取了Excel中的一列)

excel_path = './name_list.xlsx'

def read_excelfile(excel_path):

lst = pd.read_excel(excel_path)

num_list = np.array(lst).reshape(-1,).tolist()

return num_list

num_list = read_excelfile(excel_path)

num_list.sort()

3 读取文件夹中所有文件的文件名(只提取数字部分)

file_dir = r'../2000_PCAP'

filename_list = []

def find_file(file_dir):

if os.path.isdir(file_dir):

for i in os.listdir(file_dir):

if not os.path.isdir(i):

name,pcap = i.split('.')

if name.isdigit():

filename_list.append(int(name))

else:

# 这里用了递归,防止出现二级目录的情况,这里考虑的有点复杂,你可以选择去除

find_file(i)

find_file(file_dir)

4 定义函数: 二者进行匹配查找,这里采用二分查找方式

def binary_chop(num_list,filename,start=0,end=None):

# 递归解决二分查找

end = len(num_list)-1 if end is None else end

mid_index = (end-start)//2 + start

if end >= start:

if filename > num_list[mid_index]:

return binary_chop(num_list,filename,start=mid_index+1,end=end)

elif filename < num_list[mid_index]:

return binary_chop(num_list,filename,start=start,end=mid_index-1)

elif filename == num_list[mid_index]:

return mid_index

else:

return '没有此值'

else:

return '没有此值'

5 定义函数:把找到的文件名复制到指定文件夹中

new_path = '../2000_PCAP_part1'

def copy_file(file_num_name,file_dir):

old_file = os.path.join(file_dir,str(file_num_name)+'.pcap')

new_file = os.path.join(new_path,str(file_num_name)+'.pcap')

shutil.copyfile(old_file,new_file)

6 实现上述最后两步操作

for filename in filename_list:

# 执行二分查找,执行操作步骤4

index = binary_chop(num_list,filename)

if type(index) is int:

# 符合条件的文件名找到

file_num_name = num_list[index]

# 复制到新的文件夹中,执行操作步骤5

copy_file(file_num_name,file_dir)

使用python,可以极大的提高日常的工作效率,它强大的第三方模块,注定应用面会很广,有兴趣的朋友真的可以抽空学一学。

以上只是我个人的理解,相信大家还会有很多很好的方法,欢迎交流,如果写的有不对的地方,也欢迎批评指正。

pythonexcelweb交互插件_来一次Python与Excel的完美交互相关推荐

  1. python excelwriter保存路径_太赞!Python和Excel终于可以互通了

    今天为大家分享一篇使用python将大量数据导出到Excel中的技巧心得,可以让Python和Excel的数据实现互通!具有很好的参考价值,希望对大家有所帮助(建议在电脑端阅读,代码案例较多).一起过 ...

  2. tinypng 批量处理插件_分享六款逆天的Excel插件,高效处理数据必备!低调使用...

    Excel是个很强大的数据处理软件,但也正因为它的强大,很多操作就比较复杂,想要熟练掌握并上手也不是件简单的事情.那么在办公中我们怎样才能快速提高我们的数据处理能力呢?别急,今天小编就来跟大家分享六个 ...

  3. python写入excel文件保存在哪里_万字长文记录Python读写EXCEL文件常用方法大全

    python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别,这里我主要介绍几个常用的方式. 用xlrd和xlwt进行excel读写; 用openpyxl进行excel读写; 用panda ...

  4. Python和Excel的完美结合:常用操作汇总

    在以前,商业分析对应的英文单词是Business Analysis,大家用的分析工具是Excel,后来数据量大了,Excel应付不过来了(Excel最大支持行数为1048576行),人们开始转向pyt ...

  5. notepadpython插件_用NotePad++写python及自动补全

    以前一直用eclipse+pydev写python,但是eclipse启动速度实在太悲催了.后来有人推荐用Notepad++.NP确实不错,体积小,绿色且启动速度极快.支持的语言种类也很多,插件巨多, ...

  6. vue canvas插件_基于vue.js 制作在线桌椅定制选择交互特效源码

    码农那点事儿 关注我们,一起学习进步 基于vue.js写的在线桌子椅子垫子选择拼成的自己理想的书桌椅图像,这是一款交互式的课桌椅在线定制选择功能.非常不错,感兴趣的朋友前来下载使用. 下载源码(提取码 ...

  7. atompython运行插件_做一个运行Python文件的Atom插件

    最近在学习Python,自然也安装了Atom编辑器的一些Python插件.有一个插件名字叫做atom-python-run,作用很简单,就是按F5运行当前Python文件.不过这个插件有一个问题,就是 ...

  8. python浏览器交互代码_使用Mechanize实现Python模拟自然浏览器行为来完成与网页之间的交互....

    工作上我需要Python模拟自然的浏览器行为访问某个网站.使用urllib2也勉强能够做到,但貌似有些麻烦.考虑使用第三方包来实现,这样方便一些.上网找了下,发现 用pamie,是用来操作控制ie的. ...

  9. python 答题插件_大话西游答题器 Python版本

    科举,大理寺都适用. 唯独不支持的是殿试. 项目代吗 pip install requests 然后保存下列代码到一个python文件(如: search.py) # -*- coding: utf- ...

最新文章

  1. Android框架之路——EventBus的使用
  2. Linux 最新SO_REUSEPORT特性
  3. php获取excel时间,详细介绍PHPExcel读取Excel时间的示例代码
  4. Java 求分段函数g(x)的值
  5. 验证用户名和密码业务逻辑
  6. 微信公众平台开发之微信access_token如何有效长期保存
  7. 中法线如何反转_凹凸贴图、法线贴图、置换贴图傻傻分不清?
  8. 【机器视觉】 fuzzy_measure_pos算子
  9. C++ STL : 模拟实现STL中的关联式容器unordered_map/unordered_set
  10. 3、oracle数据库的语法基础
  11. 【语义分割】论文代码资料汇总
  12. 为Editplus安装smali代码语法高亮插件
  13. uni-app android白屏,uniapp页面跳转出现白屏怎么办
  14. DXperience重编译汉化的方法
  15. 局域网共享工具_win10一键局域网共享工具使用教程
  16. java基础案例7-4升级日记本
  17. hdmi接口有什么用_显示器有哪些接口?DP、HDMI、VGA、DVI有什么区别?
  18. Linux命令之统计文件字数、字符数、字节数及行数信息wc
  19. 9.进程监控(process_exporter)
  20. isEmpty和null区别

热门文章

  1. svn 本地仓库使用
  2. win10如何使用pip下载适合自己python版本的matplotlib?(亲测有效)
  3. java 3des解密过程_6. Java 加解密技术系列之 3DES
  4. android view clip,Android 自定义View Clip
  5. 为什么计算机桌面图标不见了,电脑桌面图标都没了,详细教您电脑桌面图标都没了怎么恢复...
  6. mysql设计经纬度表_MySQL经纬度表设置
  7. StaticLinkList
  8. 3w最简单led灯电路图_行业内幕揭秘:LED灯没有你想的那么简单!
  9. netcore读取json文件_.Net Core如何读取Json配置文件
  10. linux 信号处理实验,linux下信号处理