|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
dir1=input('输入要查找的初始目录:')
v=[]
name=input('输入要查找的格式【as: .mp4 .txt】:')
import os
def serach(dir1,name):
os.chdir(dir1) #改变工作路径
for f in os.listdir(os.curdir): #文件名(当前目录)
a=os.path.splitext(f)[1] #分隔文件名与扩展名
if a in name:
v.append(os.getcwd()+os.sep+f+os.linesep) #当前工作目录+路径分隔符+文件名+终止符
if os.path.isdir(f): #判断是不是目录
serach(f,name) #调用函数,递归
os.chdir(os.pardir) #改变工作路径(上一级目录)
program=os.getcwd() #当前工作目录
serach(dir1,name)
f=open(program+os.sep+'v.txt','w') #当前工作目录+路径分隔符+自定义文件名(可写入)
f.writelines(v)
f.close()
运行后,我想搜索E盘里所有的txt文件,该怎么做,还是这是无法做到的?
这个文件夹'E:\\System Volume Information'是系统目录,用户是没有权限访问的,报错正常,递归时避开类似的系统目录就好了。还有如果磁盘文件太多,要注意会超出递归最大深度导致报错,用时也会比较久。还是那句话,我更倾向于用os.walk来历遍目录。
再加一句:
- dir1 = input("输入要查找的初始目录:")
- v = []
- name = input("输入要查找的格式【as: .mp4 .txt】:")
- import os
- def serach(dir1, name):
- try:
- os.chdir(dir1) # 改变工作路径
- for f in os.listdir(os.curdir): # 文件名(当前目录)
- if os.path.isfile(f):
- a = os.path.splitext(f)[1] # 分隔文件名与扩展名
- if a in name:
- v.append(os.getcwd() + os.sep + f + os.linesep) # 当前工作目录+路径分隔符+文件名+终止符
- elif os.path.isdir(f): # 判断是不是目录
- serach(os.path.join(os.getcwd(), f), name) # 调用函数,递归
- os.chdir(os.pardir) # 改变工作路径(上一级目录)
- except:
- pass
- program = os.getcwd() # 当前工作目录
- serach(dir1, name)
- f = open(program + os.sep + "v.txt", "w") # 当前工作目录+路径分隔符+自定义文件名(可写入)
- f.writelines(v)
- f.close()
复制代码
|
|