挺久之前就一直在用的脚本了,尤其是在需要批量查找指定类型文件并复制到指定地方时尤其实用,可以节省很多时间。 得益于Python的平台独立性,实现了跨平台开发。 下面直接贴出代码,便于记录学习。
1.代码
# coding=utf-8
import os.path
import sys
import shutil
def findAllFiles(root_dir, filter):
"""
读取root_dir目录下指定类型文件的路径,返回一个list
:param root_dir: 文件存放的目录
:return: 返回两个list,paths为文件的绝对路径,names为文件名
"""
print("Finding files ends with \'" + filter + "\' ...")
separator = os.path.sep
paths = []
names = []
# 遍历
for parent, dirname, filenames in os.walk(root_dir):
for filename in filenames:
if filename.endswith(filter):
paths.append(parent + separator)
names.append(filename)
for i in range(paths.__len__()):
print(paths[i] + names[i])
print (names.__len__().__str__() + " files have been found.")
paths.sort()
names.sort()
return paths, names
def copyFiles(srcPaths, srcFiles, dstDir):
for i in range(srcFiles.__len__()):
shutil.copy(srcPaths[i] + srcFiles[i], dstDir + os.path.sep + srcFiles[i])
print("Copied " + (i + 1).__str__() + "/" + srcFiles.__len__().__str__())
if sys.argv.__len__() == 2 and sys.argv[1] == "help":
print("用于批量搜索制定文件并拷贝至指定位置\n")
print("脚本启动命令格式:")
print("scriptname.py:[search_dir] [fileType] [dst_dir]")
print("\n函数帮助:")
exec ("help(findAllFiles)")
exec ("help(copyFiles)")
elif sys.argv.__len__() == 4:
search_dir = sys.argv[1]
fileType = sys.argv[2]
dst_dir = sys.argv[3]
paths, names = findAllFiles(search_dir, fileType)
if sys.version_info.major < 3:
flag = raw_input("\nStart copy?y/n\n")
else:
flag = input("\nStart copy?y/n\n")
if flag == 'y':
copyFiles(paths, names, dst_dir)
else:
exit()
else:
print("Input \"scriptname.py help\" for help information.")
代码也比较简单易懂,有些稍微有技巧的地方都加了注释。 虽然代码简单,但在实际项目中需求很大,所以有时候相比于复杂的技术,能不能抓住实际需求点显得更为重要。 也就像之前花了大力气开发的移动测绘平台几乎无人问津,比较“随便”开发的体重记录器却有很多人用一样,类似的道理。 这里说“随便”是相对于移动测绘平台而言,几乎没有用到什么高深的技术,只是用到了SQLite数据库而已。
本文作者原创,未经许可不得转载,谢谢配合