此代码的目的是读取包含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
答案 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。