Чтение строк из файла - PullRequest
0 голосов
/ 16 ноября 2011

Я пишу программу для чтения строк текста из 5 файлов и компиляции текста из этих 5 файлов в соответствующие списки.

Однако у меня возникают большие проблемы с тем, чтобы программа действительно прочиталатекст в список, вот мой код:

from random import random

from dice import choose

b = open ('E:\Videos, TV etc\Python\ca2\beginning.txt', 'r'). readlines ()
stripped_b = [item.strip() for item in b]

a = open ('E:\Videos, TV etc\Python\ca2\adjective.txt', 'r'). readlines ()
stripped_a = [item.strip() for item in a]

i = open ('E:\Videos, TV etc\Python\ca2\inflate.txt', 'r'). readlines ()
stripped_i = [item.strip() for item in i]

n = open ('E:\Videos, TV etc\Python\ca2\noun.txt', 'r'). readlines ()
stripped_n = [item.strip() for item in n]

phrase = []

turn = 0

def business_phrase(x):

    x = raw_input("\n\nInsert a number of business phrases to generate: ")
    while turn <= x:
        turn += 1
        for item in stripped_b:
            random_word = choose(item)
            phrase.append(random_word)
        for item in stripped_a:
            random_word = choose(item)
            phrase.append(random_word)
        for item in stripped_i:
            random_word = choose(item)
            phrase.append(random_word)
        for item in stripped_n:
            random_word = choose(item)
            phrase.append(random_word)
    print random_list

business_phrase (x)

где начало, прилагательное, раздувание и существительное - текстовые файлы, а игра в кости - это файл python, содержащийфункция выбора.

Я запускаю эту программу, чтобы попытаться сгенерировать фразу, и получаю следующее сообщение об ошибке:

IOError: [Errno 22] invalid mode ('r') or filename 'E:\\Videos, Tv etc\\Python\\ca2\\x08eginning.txt'

Я понятия не имею, почему он не читает текстфайлы, как они находятся в том же каталоге, как указано (на самом деле в том же каталоге, что и программа, содержащая функцию).

У кого-нибудь есть идеи, я полностью озадачен.

Ответы [ 3 ]

8 голосов
/ 16 ноября 2011

при обработке имен путей Windows, всегда используйте необработанные строковые литералы:

r'E:\Videos, TV etc\Python\ca2\beginning.txt'

потому что в противном случае обратные слеши могут быть интерпретированы как запуск escape-последовательности.

Кроме того, следите за обратным слешем в конце строки: r'C:\' - это не то, что вы думаете.

3 голосов
/ 16 ноября 2011

'\' используется для экранирования в строках Python. Вот список того, что вы можете с ними сделать .Вы хотите избежать обратной косой черты, чтобы фактически прочитать их как обратную, что означает использование двух из них.Сделайте это:

'E:\\Videos, TV etc\\Python\\ca2\\adjective.txt'

Необработанные строки, например, предложенные Ларсманом также будут работать!

2 голосов
/ 16 ноября 2011

Нет, вероятно, у нет имени файла с ^ H в нем.Избегайте обратной косой черты.

'...\\...'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...