我想知道如何从目录中打印文件列表。我知道这应该很容易做到,但我正在搞清楚如何做到这一点。我的第二个方法搜索特征(目录)是一个方法,它应该在给出按键的情况下返回在该目录中找到的文件列表。第三种方法take_action(directory1)应该打印你在search_directory(目录)下输入的文件,然后在该方法下应该有更多,但是现在让我们专注于获取要打印的文件列表。
这是应该做的。
输入的第三行指定应对搜索中找到的每个有趣文件执行的操作。无论如何,当你发现一个有趣的文件时,你应该总是在它自己的输出行上打印文件的路径到控制台;这里选择的动作指定了应该用它做什么。
这是我的代码。
import os
import os.path
import shutil
from pathlib import Path
import pathlib
def search_files():
exist = Path(directory)
if exist.exists():
return directory
else:
print("Error")
print("Try again: ")
return search_files()
def search_characteristics(directory):
interesting = input()
interesting1=interesting.split(" ")
if (interesting1[0] == 'N'):
path1 = os.path.join(directory, interesting1[1])
if(os.path.isfile(path1)):
return path1
else:
return search_characteristics(directory)
print(path1)
return path1
elif interesting1[0] == 'E':
for file in os.listdir(directory):
if file.endswith(interesting1[1]):
return file
elif interesting1[0] == 'S':
for file in os.listdir(directory):
try:
if os.path.getsize(file) > int(interesting1[1]):
return file
except:
print('Only Numbers after S please.')
return search_characteristics(directory)
else:
print("Error")
return search_characteristics(directory)
def take_action(directory1):
action = input()
action1=action.split(" ")
if (action1[0] == 'P'):
print(directory1)
if __name__ == '__main__':
directory = input()
search_files()
directory1=search_characteristics(directory)
take_action(directory1)
当我运行它时,它似乎只返回应该返回的文件列表中的第一个文件。我也不确定我是否正在阅读它应该正确做什么。
答案 0 :(得分:0)
尝试os.walk()
list(os.walk("."))[0]
将为您提供当前文件夹中的所有子目录。
修改
也许这更适合您的需求
filter(lambda x : os.path.isdir(x) , os.listdir("."))
答案 1 :(得分:0)
首先,让我假设提供一些非常一般性的建议。给自己一些软件,让你可以尝试一小段代码,如果你还没有。在Windows上,我所知道的最好的是PythonWin;你正在寻找一个REPL计划。我之所以提到这一点,是因为我注意到你的代码中提到Path的答案非常接近。如果你已经尝试了一点,那么你就可以回答你的主要问题。
获取目录中的文件列表:
import os
from pathlib import Path
path=Path('C:\\Python34')
for fileName in path.iterdir():
fileName.name
响应一个或两个评论:不是依赖于全局变量和用户输入,通常的做法是回退到默认值。在这种情况下,它将是当前目录。为此,将None设为默认目录并检查它是否已在函数中声明;否则使用当前工作目录。
def search_files(directory=None):
if not directory:
directory=os.getcwd