返回一个函数的所有可能输出,然后在另一个函数中使用它

时间:2018-09-26 13:10:20

标签: python class

此代码的目的是读取包含5个文件的目录,然后打印这些文件的名称,但是当我尝试这样做时,我得到了奇怪的结果。

ps [这不是真正的代码,要从一个函数返回所有可能的输出,然后在另一个函数中使用它来在同一类中对其进行某些操作]

代码如下:

import os


class Data:
    def __init__(self):
        self.dir = r"C:\Users\Sayed\Desktop\script\New folder"

    def files(self):
        os.chdir(self.dir)
        for files in os.listdir(self.dir):
            return files

    def df(self):
        files = self.files()
        for file in files:
            print(file)

这是我所期望的:

文件(1).txt

文件(2).txt

文件(3).txt

文件(4).txt

文件(5).txt

以下是输出:

f

i

l

e

1

t

x

t

2 个答案:

答案 0 :(得分:1)

os.listdir()返回文件列表,因此您无需遍历文件。将您的files函数更改为此:

def files(self):
    os.chdir(self.dir)
    files = os.listdir(self.dir)
    return files

答案 1 :(得分:0)

您的第一个return()导致循环中断,因此仅保存1个文件名而不是所有文件名。然后,由于str()是可迭代的类型,因此for()循环以绝对正确的方式循环通过它。

我建议您执行以下操作:

def files(self):
    output = []
    os.chdir(self.dir)
    for files in os.listdir(self.dir):
        output.append(files)
    return output

您可能想详细了解Iterables and Iterators