Чтение в .txt файл в Python - PullRequest
       49

Чтение в .txt файл в Python

0 голосов
/ 26 апреля 2020

У меня есть текстовый файл с такими данными:

AL Autauga

AL Baldwin

AL Barbour

AL Bibb

def stateToCounties(filename):

    """
    :param filename: text containing state name, tab, county name, enter button...
    :return: { state name : [list of counties in that state] }
    """

    filein = open(filename.txt, 'r')
    lines = filein.readlines()
    rawdata = []
    states = {}

    for line in lines:
        line = line.strip('\n').split('\t')
        rawdata += [line]

    filein.close()

    for part in rawdata:
        if part[0] not in states.keys():
            states[part[0]] = [part[1]]
        else:
            states[part[0]] += [part[1]]
    return states


print(stateToCounties('uscounties.txt'))

Я должен получить что-то вроде {'AL': [Autauga ...]} в качестве вывода, но вместо этого получил ошибку: AttributeError: у объекта 'str' нет атрибута 'txt'. Если я использую строку filein = open('filename.txt', 'r') вместо filein = open(filename.txt, 'r'), тогда я получаю FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'filename.txt' как ошибка. Как я могу исправить это? Файл находится в той же папке, что и мой .py файл, и я читал в таких файлах, как это раньше, поэтому я не понимаю, что не так сейчас.

1 Ответ

2 голосов
/ 26 апреля 2020

Ага, тебе не нужно filename.txt. вместо этого просто выполните

filein = open(filename, 'r')

filename - переменная, входящая в функцию, уже является строковым объектом и содержит расширение .txt. Вы не можете сделать .txt для строкового объекта. Если вы хотите передать имя файла без расширения функции, то при открытии файла позже вам нужно сделать:

filein = open(f'{filename}.txt', 'r')
...