来自 编程应用 2019-09-04 19:47 的文章
当前位置: 六合联盟网 > 编程应用 > 正文

目录遍历,输出绝对路径

python学习笔记(六)

    近期刚初阶读书Python,在念书进度中有一个小作业,让大家写贰个物色并出口目录下文件的相对路径的小本子。来这里记录一下以此进度。

目录遍历

1.递归遍历

import os

allfile = []
def dirList(path):
      filelist = os.listdir(path)
      for filename in filelist:
            filepath=os.path.join(path,filename)
            if(os.path.isdir(filepath)):
                  dirList(filepath)
            allfile.append(filepath)
      return allfile

print dirList('.')

2.用os.walk()


os.walk() 重临八个生成器,每多个列表有3个因素,分别是,当前目录,当前目录中的文件夹,当前目录中的文件
例如:

import os

g = os.walk('.')
for i in g:
      print i


输出: ('.', ['tt'], ['1.txt', '111.py', '2.py', '3', '3.py', '4.py', '5.py'])
('.\tt', ['a'], ['34.txt'])
('.\tt\a', [], ['12.txt'])
事例:获取每种文件名字

import os

g = os.walk('.')
for root,dirs,files in g:
      for filename in files:
            print os.path.join(root,filename)

    在系统的“OS”模块中,是有遍历目录这几个函数的(后来才精通),先上贰个自个儿要好写的——利用函数的递归达成检索并出口文件及文件夹的相对路线。

特别管理

try...except

例子:

try:
      f()
except NameError,msg:
      print "error"



只要有三个或者的足够,只需在背后再加except语句就可以

try...except...finally


finally后边加的代码一定会进行
例子:

try:
      g()
      open('aaa.py')
except NameError,msg:
      print "name error"
except IOError,msg:
      print "io error"
finally:
      print 'end'


输出: name error
end

io error不会输出,因为 g()发生的NameError比open('aaa.py')爆发的IOError早,它先中断了,后边的代码都没施行。

raise


发出极度
例子:

try:
      raise IOError("noting")
except NameError,msg:
      print "name error"
except IOError,msg:
      print "io error"
finally:
      print 'end'

目录遍历 1.递归遍历 import osallfile = []def dirList(path): filelist = os.listdir(path) for filename in filelist: filepath=os.path.join(path,fil...

#!/usr/bin/python

#coding:utf-8

import os

def panduan():

    pathlist = os.listdir(os.getcwd())

    for file in pathlist:

        if os.path.isdir(os.getcwd()+'/%s' % file):

            result.write('%s:'%file+os.getcwd()+'/%sn'%file) #将文件夹路径写入result.txt文件

            os.chdir(os.getcwd()+"/%s"%file)

            panduan()

            os.chdir('..')

        else :

            result.write("%s:" % file+os.getcwd()+"/%sn"%file)

def again():

    try:

        os.chdir(raw_input('请输入检索的文件目录:'))

    except OSError,e:

        try :

            os.chdir(raw_input('该目录不设有,请再次输入检索的文件目录:'))

        except OSError,e:

            print "目录不设有,请确认文件目录,并再度运营脚本!"

again()

result = open('result.txt','w+')

panduan()

result.close()

    值得注意的是,假若先行调用“again”函数,result.txt文件就能够在所输入的目录生成。比如,要检索root目录下,result.txt文件就能够扭转在root目录下;后调用“again”函数,result.txt文件就能转移在你眼下所在的目录。

    接下去呈现一下因而“OS”模块中的”os.walk()”进行文件目录检索的程序代码:

#!/usr/bin/python

#coding=utf8

import os

path = raw_input("请输入检索文件目录:")

if not os.path.isdir(path):

    path = raw_input("该目录不设有,请再一次输入检索文件目录:")

    if not os.path.isdir(path):

        print '目录不设有,请确认文件目录,并再度运转脚本'

        exit()

result = open('result.txt','w+')

g = os.walk(path)

for path,d,filelist in g:

    for filename in filelist :

        result.write('%s:'%filename+os.path.join(path,filename))

result.close()

    第一种艺术在查找一些提到越来越高权力必要的文件目录时,无法全体查找到,且代码书写较复杂。相比较之下,利用“OS”模块中的“os.walk()”进行遍历、输出,无论是从代码的书写依旧最后结果的出口,都心中有数优化第一种接纳循环语句进行递归得到的结果。

本文由六合联盟网发布于编程应用,转载请注明出处:目录遍历,输出绝对路径

关键词: