使用目录

时间:2014-11-23 23:33:56

标签: python directory

这是我第一次尝试将一个在python中使用目录的程序放在一起。

在我当前目录的子目录中有一个名为letters/的目录,它包含儿童给圣诞老人的信件。

程序的编写方式应该是c:/python/exercise5/solved.py之类的某个目录。这些字母位于子目录c:/python/exercise5/letters中,它包含:c:/python/exercise5/letters/john.txt

这些文件只包含每个孩子所希望的事物清单。因此,文件john.txt的内容例如是:

notebook, toy car, t-shirt

我要做的是创建一个接收子名称的函数,并返回孩子想要的项目列表。为此,该函数必须从子目录"字母"中读取正确的文件。

所以看起来有点像这样

read_file("john") {'notebook', 'toy car', 't-shirt'} 

接下来我想要创建一个不接收任何参数的函数,但它返回包含所有孩子名字的{ },这些名字写给圣诞老人一封信。

喜欢这个

names = senders() >>> names {'dana', 'emma', 'kerry', 'john', 'tom'}

3 个答案:

答案 0 :(得分:0)

我建议你看看os module。它提供列出目录,删除目录等的功能,例如

os.listdir("c:\\python27\\Lib\\site-packages")

将返回文件夹site-packages中的文件和文件夹列表。

我不知道一个字母文件应该是什么样子,但我认为它是一个纯文本文件,包含用空格分隔的单词,如下所示:

notebook toy-car tshirt

然后你就可以阅读文件的内容,然后file_contents.split(),它会返回一个包含单词的列表[' notebook',' toy-car' ,' tshirt'],有关详细信息,请查看string module

HTH。

答案 1 :(得分:0)

假设当前目录letters的子目录c:/python/exercise5,您只需使用相对路径为特定子项打开文件:

import os.path

BASE_DIR = ''        # set this if you want a fixed base directory
LETTERS_DIR = os.path.join(BASE_DIR, 'letters')

def read_file(child_name):
    '''Returns a list of items requested by the given child'''
    filename = '{}.txt'.format(os.path.join(LETTERS_DIR, child_name))
    with open(filename) as f:
        return set([s.strip() for s in next(f).split(',')])    # only reads the first line

发件人列表只需从letters目录中获取文件名并删除.txt扩展名:

import os

def senders():
    return set([filename[:-4] for filename in os.listdir(LETTERS_DIR) if filename.endswith('.txt')])

请注意,这两个函数都会返回一个列表,而不是问题中建议的字典。

答案 2 :(得分:0)

说明说最终结果应该包含这些冒号{}

每个文本文件在每行中包含少量项目

像这样:

john.txt

笔记本 玩具车 T恤