python 文件目录遍历
递归遍历目录和文件
import os
path = r'F:\PycharmProjects\basic gram\作业和习题\test'
def getAllFileAndDir(path):
# 获取当前目录下所有文件及文件目录
fileList = os.listdir(path)
# print(fileList)
# 遍历fileList列表
for fileName in fileList:
# isdir isfile
# print(fileName)
# 拼接绝对路径
absFile = os.path.join(path,fileName)
if os.path.isdir(absFile):
print(absFile+'---目录')
getAllFileAndDir(absFile)
else:
print(absFile+'---文件')
getAllFileAndDir(path)
栈 深度遍历
import collections
def getAllFileAndDir(sourcePath):
stack = collections.deque()
stack.append(sourcePath)
while len(stack) != 0:
path = stack.pop()
fileList = os.listdir(path)
for fileName in fileList:
absFile = os.path.join(path, fileName)
if os.path.isdir(absFile):
print(absFile+'---目录')
stack.append(absFile)
else:
print(absFile+'---文件')
getAllFileAndDir(path)
队列 广度遍历
def getAllFileAndDir(sourcePath):
queue = collections.deque()
queue.append(sourcePath)
while len(queue) !=0:
path = queue.popleft()
fileList = os.listdir(path)
for fileName in fileList:
absFile = os.path.join(path, fileName)
if os.path.isdir(absFile):
print(absFile+'---目录')
queue.append(absFile)
else:
print(absFile+'---文件')
getAllFileAndDir(path)
复制目录和文件
import os
# 复制目录
def copyDir(sourDir,targetDir):
if not os.path.exists(sourDir):
print("如果源目录不存在,直接停止")
return
if not os.path.exists(targetDir):
os.makedirs(targetDir)
listName = os.listdir(sourDir)
for dirNameAndFileName in listName:
sourAbsPath = os.path.join(sourDir,dirNameAndFileName)
targetAbsPath = os.path.join(targetDir,dirNameAndFileName)
if os.path.isdir(sourAbsPath):
copyDir(sourAbsPath,targetAbsPath)
if os.path.isfile(sourAbsPath):
# 如果目标文件不存在, 或者 如果该文件已经存在但是文件大小不一样
if (not os.path.exists(targetAbsPath)) or (os.path.exists(targetAbsPath) and (os.path.getsize(sourAbsPath) != os.path.getsize(targetAbsPath))):
rf = open(sourAbsPath,"rb")
wf = open(targetAbsPath,"wb")
while True:
content = rf.read(1024*1024)
if len(content) == 0:
break
wf.write(content)
wf.flush()
wf.close()
rf.close()
sPath = r'F:\PycharmProjects\basic gram\作业和习题\test'
tPath = r'F:\PycharmProjects\basic gram\作业和习题\testNew'
copyDir(sPath, tPath)
文件复制实例
1.一个函数接受文件夹的名称作为输入参数,请将该文件夹中的所有文件复制到 文件夹名-副本 中去,请补充缺失的代码. (20分)
def copyFile(sPath)
2.题1复制过程中,每隔一秒打印一次复制进度(即当前已复制个数/总文件个数)(15分)
import os
import collections
import time
import sys
def getFileNum(sPath):
num = 0
stack = collections.deque()
stack.append(sPath)
while len(stack) != 0:
path = stack.pop()
fileList = os.listdir(path)
for fileName in fileList:
absFile = os.path.join(path, fileName)
if os.path.isdir(absFile):
stack.append(absFile)
else:
num += 1
return num
def copyFile(sPath):
tPath = r'F:\PycharmProjects\basic gram\作业和习题\Anaconda3-副本'
stack1 = collections.deque()
stack1.append(sPath)
stack2 = collections.deque()
stack2.append(tPath)
timepoint = 1
filenum = 0
while len(stack1) != 0:
sPath = stack1.pop()
tPath = stack2.pop()
if not os.path.exists(tPath):
os.makedirs(tPath)
listName = os.listdir(sPath)
for filename in listName:
absfile = os.path.join(sPath, filename)
tabsfile = os.path.join(tPath, filename)
if os.path.isdir(absfile):
stack1.append(absfile)
stack2.append(tabsfile)
else:
rf = open(absfile, 'rb')
wf = open(tabsfile, 'wb')
while True:
content = rf.read(1024*1024)
if len(content) == 0:
break
wf.write(content)
# 刷新缓冲区
wf.flush()
if time.clock()//1 == timepoint:
sys.stdout.write('\r进度:%d/%d'%(filenum,num))
timepoint += 1
wf.close()
rf.close()
filenum += 1
sys.stdout.write('\r进度:%d/%d' % (num, num))
sPath = r'F:\PycharmProjects\basic gram\作业和习题\Anaconda3'
num = getFileNum(sPath)
# print(num)
start_time = time.clock()
copyFile(sPath)
python 文件目录遍历的更多相关文章
- python文件目录遍历保存成xml文件代码
Linux服务器有CentOS.Fedora等,都预先安装了Python,版本从2.4到2.5不等,而Windows类型的服务器也多数安装了Python,因此只要在本机写好一个脚本,上传到对应机器,在 ...
- Android安全开发之ZIP文件目录遍历
1.ZIP文件目录遍历简介 因为ZIP压缩包文件中允许存在“../”的字符串,攻击者可以利用多个“../”在解压时改变ZIP包中某个文件的存放位置,覆盖掉应用原有的文件.如果被覆盖掉的文件是动态链接s ...
- python 实时遍历日志文件
首先尝试使用 python open 遍历一个大日志文件, 使用 readlines() 还是 readline() ? 总体上 readlines() 不慢于python 一次次调用 readlin ...
- Android 安全开发之 ZIP 文件目录遍历
1.ZIP文件目录遍历简介 因为ZIP压缩包文件中允许存在"../"的字符串,攻击者可以利用多个"../"在解压时改变ZIP包中某个文件的存放位置,覆盖掉应用原 ...
- Python文件遍历二种方法
分享下有关Python文件遍历的两种方法,使用的OS模块的os.walk和os.listdir实现. 关于Python的文件遍历,大概有两种方法,一种是较为便利的os.walk(),还有一种是利用os ...
- Python简单遍历字典及删除元素的方法
Python简单遍历字典及删除元素的方法 这篇文章主要介绍了Python简单遍历字典及删除元素的方法,结合实例形式分析了Python遍历字典删除元素的操作方法与相关注意事项,需要的朋友可以参考下 具体 ...
- python+selenium遍历某一个标签中的内容
一.python+selenium遍历某一个标签中的内容 举个例子:我要获取列表标签<li></li>的内容 根据python+selenium定位到列表整体,使用for循环获 ...
- python栈、队列、文件目录遍历
一. 栈与队列 关注公众号"轻松学编程"了解更多. 1. 栈 stack 特点:先进先出[可以抽象成竹筒中的豆子,先进去的后出来] 后来者居上 mystack = [] #压栈[向 ...
- python中遍历文件的3个方法
转自: http://www.jb51.net/article/54640.htm 用python进行文件遍历有多种方法,这里列举并说明一下. os.path.walk() 这是一个传统的用法. wa ...
随机推荐
- mysql取年、月、日、时间
select id, phone,time,year(time),month(time), DAY(time),TIME(time) from user where phone='xxxxxx' # ...
- 转 php简单伪静态实例
mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面.下面我详细说说它的使用方法!对初学者很有用的哦! 1.检测Apache是否支持mod_rewrite 通过php提供的p ...
- 《web与移动开发》征文活动
活动简介: 首次征文活动有PHPChina主办,是面向全国所有的IT界活动,希望大家大家以PHPChina论坛为载体,积极的分享技术.希望技术的分享为大家的工作猪跑,也希望大家早日成为技术行业的中流砥 ...
- 转:Ogre源代码浅析——脚本及其解析(一)
Ogre的许多外部资源数据都有着相应的脚本格式,现例举如下: Material(材质):Ogre使用的是“大材质”的概念.狭义的“材质”概念往往是与“贴图”等概念区分开的,比如在Lambert光照模型 ...
- 敏捷开发与Scrum
敏捷开发以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发.在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视.可集成和可运行使用的特征.换言之,就是把 ...
- 【MySQL】局域网内:在一台电脑访问另一台电脑的mysql数据库
1. 假设192.168.1.3为服务器2. 首先在ip为192.168.1.103的机子上能够ping 通运行->cmd>ping 192.168.1.3检查是否能ping通3. 把两台 ...
- oracle安装后tnsnames.ora内容
# tnsnames.ora Network Configuration File: D:\Develop\oracle11g\product\11.2.0\dbhome_1\network\admi ...
- tensorflow内存溢出问题
Tensorflow的静态图结构简洁清晰,符合人的思维.虽然编程上略微有些复杂,但是原理很容易看懂. Tensorflow分建图过程和运行图(张量求值)两个阶段,在这两个阶段中都可以定义操作和张量.但 ...
- ThinkPHP学习(二)
书接前文. 我想前台填写内容,然后在后台保存一下,规划了一下前台要录入的内容,主要包括title.content两大内容.然后简单设计了一个前台页面(复杂的我得会啊),就在上篇文章的基础上直接加了: ...
- linux 的时区设置函数tzset() 【转】
linux 的时区设置函数tzset() 本文转载于: http://blog.csdn.net/epicyong333/article/details/5258152 tzset #incude & ...