标题:关于对目录和文件的操作
只看楼主
firewater
Rank: 1
等 级:新手上路
帖 子:47
专家分:4
注 册:2014-7-13
结帖率:87.5%
 问题点数:0 回复次数:2 
关于对目录和文件的操作
最近在看廖雪峰的python教程,看到了这样一个题目
练习:编写一个search(s)的函数,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出完整路径:

$ python search.py test
unit_test.log
py/test.py
py/test_os.py
my/logs/unit-test-result.txt
我的是win10,代码如下:
程序代码:
#coding=utf-8

import os

def search(s, dir = '.'):
    absPath = os.path.abspath('.')
    for i in os.listdir(absPath):
        # dir = os.path.join(absPath,i)
        # print i,dir.decode('gbk')
        if os.path.isdir(i):
            dir2 = os.path.join(absPath, i)

            search(s, dir2)
        elif os.path.isfile(i) and s in i:
            #pass
            print absPath+i



if __name__ == '__main__':
    search('.py')
但是一直提示错误:
.........
  File "E:/ѧϰ/Python/test/test.py", line 14, in search
    search(s, dir2.decode('gbk'))
  File "E:/ѧϰ/Python/test/test.py", line 14, in search
    search(s, dir2.decode('gbk'))
  File "E:/ѧϰ/Python/test/test.py", line 7, in search
    absPath = os.path.abspath('.')
  File "C:\Python27\lib\ntpath.py", line 495, in abspath
    return normpath(path)
  File "C:\Python27\lib\ntpath.py", line 418, in normpath
    backslash, dot = (u'\\', u'.') if isinstance(path, _unicode) else ('\\', '.')
RuntimeError: maximum recursion depth exceeded while calling a Python object
一直没搞明白哪里错了
搜索更多相关主题的帖子: search python 字符串 color 
2016-01-14 16:32
fenghelong
Rank: 3Rank: 3
来 自:上海
等 级:论坛游侠
威 望:2
帖 子:209
专家分:197
注 册:2011-8-18
得分:0 
程序代码:
# -*- coding: utf-8 -*-
'''
Created on 01 30, 2016

@author: tolerious

'''

import os,sys

def scandir(startdir, target) :
    os.chdir(startdir)
    for obj in os.listdir(os.curdir) :
        if target in obj :
            print os.getcwd() + os.sep + obj
        if os.path.isdir(obj) :
            scandir(obj, target)
            os.chdir(os.pardir)

if __name__ == "__main__":
    scandir(os.curdir,"test")



功能:在当前文件夹以及子文件夹下面找到包含所有"test" 字段的文件,并打印出其完整路径。
这是个递归调用、所以一定要搞清楚在什么情况下停止、以及“os.chdir(os.pardir)”这一步是很关键的、
2016-01-31 13:48
kicktick
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-2-15
得分:0 
回复 2楼 fenghelong
两段代码都试了试,确实是第一段出问题,运行错误,第二个可以正常运行。
另外第二个如果用>重定向到文件中也挺方便。如2楼所说,回到父目录是关键,学习了。
刚开始学python,从这一段代码真是体会到python的强大。

[此贴子已经被作者于2016-2-15 16:42编辑过]

2016-02-15 16:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-461095-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.133603 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved