打印目录

时间:2016-10-06 17:56:47

标签: python

我想知道如何从目录中打印文件列表。我知道这应该很容易做到,但我正在搞清楚如何做到这一点。我的第二个方法搜索特征(目录)是一个方法,它应该在给出按键的情况下返回在该目录中找到的文件列表。第三种方法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)

当我运行它时,它似乎只返回应该返回的文件列表中的第一个文件。我也不确定我是否正在阅读它应该正确做什么。

2 个答案:

答案 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