python,return';s位置和文件大小

python,return';s位置和文件大小,python,return,Python,Return,函数返回python中master well的位置 def myPath(): for root,dirs,files in os.walk(dir): for fn in files: path = os.path.join(root, fn) return path return path return path 三个位置“返回”不是我想要的。 我想得到结果“C中的所有文件” 但是,如何用下面的代

函数返回python中master well的位置

def myPath():
    for root,dirs,files in os.walk(dir):
        for fn in files:
            path = os.path.join(root, fn)
            return path
        return path
    return path
三个位置“返回”不是我想要的。 我想得到结果“C中的所有文件”

但是,如何用下面的代码实现上述功能呢?如何修改它


def find(path):
    return [os.path.join(root,fn)
        for root,dir,files in os.walk(dirs)
        for fn in files]
返回路径列表,而不仅仅是单个路径:

def find(path):
    return [os.path.join(root, fn)
            for root, dirs, files in os.walk(path)
            for fn in files]
您还可以在内环中使用
yield
来获得生成器函数,请参见。

您需要的是:

def myPath(mydir):
对于os.walk(mydir)中的根目录、目录和文件:
对于文件中的fn:
path=os.path.join(根,fn)

如果只需要列出的/home/bb/C目录,这里有3种方法

import os, glob

def listWithoutDirectories(path):
    return [os.path.join(root,fn)
        for root,dirs,files in os.walk(mydir)
            if(root==path)
                for fn in files]

def listWithDirectories(path)
    return [os.path.join(path,fn)
        for fn in os.listdir(path)]


print listWithoutDirectories('/home/bb/C')
print listWithDirectories('/home/bb/C')
#Or with a glob
print glob.glob('/home/bb/C/*')
def find(path):
    return [os.path.join(root, fn)
            for root, dirs, files in os.walk(path)
            for fn in files]
def myPath(mydir):
    for root,dirs,files in os.walk(mydir):
        for fn in files:
            path = os.path.join(root, fn)
            yield path # <----- Instead of return


for path in myPath(some_dir):
    print path
import os, glob

def listWithoutDirectories(path):
    return [os.path.join(root,fn)
        for root,dirs,files in os.walk(mydir)
            if(root==path)
                for fn in files]

def listWithDirectories(path)
    return [os.path.join(path,fn)
        for fn in os.listdir(path)]


print listWithoutDirectories('/home/bb/C')
print listWithDirectories('/home/bb/C')
#Or with a glob
print glob.glob('/home/bb/C/*')