新手学python 一个问题求教

About2Rain 2006-11-07 10:53:37
我想做这样一件事情, 遍历一个目录, 取得这个目录下所有的文件和目录名
如果此目录下的含有某种文件(如".h")则将此目录全路径名写到某个文件里,
并且对所有子目录递归执行该操作.
本来一开始打算用C写的, 但是觉得这实在是个好的实践python的机会, 只是
我刚刚上路, 还得先求教各位大侠呢!
...全文
581 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsyzl 2007-01-25
  • 打赏
  • 举报
回复
不错
S60_Py 2007-01-24
  • 打赏
  • 举报
回复
还不会递归找子目录,也不会强大的glob,再优化吧:)
import os
filedir = "/home/aboys/"
fi = [f for f in os.listdir(filedir) if os.path.isfile(os.path.join(filedir,f))]
for f in fi:
if f[-3:] == ".py":
fw = open("aboys.txt","a")
fw.write("\n"+f)
masterz 2007-01-04
  • 打赏
  • 举报
回复
pyrobocopy做的事情和你的要求差不多,不过他没有判断文件的后缀,
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/231501
我给它加了一个判断后缀的功能
http://www.fruitfruit.com/python/pyrobocopy.py
你可以看看。原来在python2.4上工作的,后来移植到python2.5没有测试过:)
lakewalker 2006-11-29
  • 打赏
  • 举报
回复
遍历目录的话, 可以用os模块里面的walk,
结合楼上那位兄弟的绝对路径的部分,
应该就可以解决问题了.

下面是实例的代码

///////////////
import os
for root, dirs, files in walk('python/Lib/email'):
print root, "consumes",
print sum([getsize(join(root, name)) for name in files]),
print "bytes in", len(files), "non-directory files"
if 'CVS' in dirs:
dirs.remove('CVS') # don't visit CVS directories
About2Rain 2006-11-16
  • 打赏
  • 举报
回复
奇怪, 分数已经改成100了 怎么还显示20阿?
Deneral 2006-11-09
  • 打赏
  • 举报
回复
没有明白楼主的意思,不过楼上的方法可以解决问题倒是真的
iambic 2006-11-07
  • 打赏
  • 举报
回复
不是太明白你的意思,给你一点参考吧。

import os
os.listdir(dir)#列出名为dir的目录下的所有文件
os.path.abspath(dir)#dir的绝对路径

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧