Проблемы с получением результата функции, записанного во внешний .txt с использованием Python - PullRequest
0 голосов
/ 16 марта 2012

Чтобы уточнить, я все еще плохо знаком с Python и программированием в целом, поэтому, пожалуйста, извините за мое невежество.

Я пытаюсь сделать список слов, дать пользователю ввести свое ключевое слово и объединитьдва, затем распечатайте их в файл .txt.Я собрал этот код ниже, и он в какой-то степени достиг этого.Моя проблема в том, что в файл key_word.txt записывается только первое ключевое слово ('kw:') + введенное пользователем ключевое слово.Я получаю этот результат с помощью «возврата» в моей функции.Если я использую «print» в моей функции, «none» get записывается в файл key_word.txt.

Как получить полный список ключевых слов ('search_kw =') + введенное пользователем ключевое слово для записи в текстовый файл.

search_kw = ('kw: ', 'kw1: ', 'kw3 ', 'kw4: ', 'kw5: ', 'kw6: ', 'kw7: ', 'kw8: ')

keyword = raw_input('Enter your keyword here\n > ')

def add_keyword():
    for word in search_kw:
        return word + keyword

text_file = open("/Users/home/Projects/keyword_file.txt", "w")
text_file.write("%s" % search_kw)
text_file.close()

add_keyword()

Ответы [ 6 ]

0 голосов
/ 16 марта 2012

Похоже, что вы открываете и закрываете файл, в который пишете, ДО того, как вы выполните какую-либо работу по захвату пользовательского ввода.

Вам нужно 1) Откройте файл для записи 2) Добавьте всю информацию о пользователе, которую вы хотите 3) ТОГДА закройте файл

Python с оператором позаботится об открытии / закрытии файла, например:

search_kw = ('kw: ', 'kw1: ', 'kw3 ', 'kw4: ', 'kw5: ', 'kw6: ', 'kw7: ', 'kw8: ')

with open('keywordfile.txt','w') as text_file:
    for word in search_kw:
        keyword = raw_input('Enter your keyword here\n > ')
        text_file.write("s\n" % word + keyword)
0 голосов
/ 16 марта 2012

Правильная структура данных для вашего случая - словарь.

0 голосов
/ 16 марта 2012

Есть несколько проблем:

search_kw = ('kw: ', 'kw1: ', 'kw3 ', 'kw4: ', 'kw5: ', 'kw6: ', 'kw7: ', 'kw8: ')

keyword = raw_input('Enter your keyword here\n > ')

def add_keyword():
    for word in search_kw:
        # Leave the function, breaking the loop after the first iteration
        return word + keyword

text_file = open("/Users/home/Projects/keyword_file.txt", "w")
# Write search_kw before adding any keywords to it
text_file.write("%s" % search_kw)
text_file.close()

# Only calling add_keyword and the end, and not using the return value
add_keyword()

То, что вы, вероятно, хотите, что-то ближе к этому:

def add_keyword():
    keywords = []
    for word in search_kw:
        keywords.append(word + keyword)
    return keywords

search_kw = add_keyword()
text_file = open("/Users/home/Projects/keyword_file.txt", "w")
text_file.write("%s" % search_kw)
text_file.close()

Есть много более элегантных способов сделать это (например, используя выражение генератора), но это должно, по крайней мере, заставить ваш пример работать.

0 голосов
/ 16 марта 2012

Вы открыли файл для записи.Запись открывает файл и начинается в начале (стирание всего).Добавление начинается в конце.Для открытия файла в режиме добавления вы используете:

f = open('/path/to/file', 'a')

Чтобы добавить файл, вы все равно используете функцию f.write().

0 голосов
/ 16 марта 2012

вы пишете список, а не строку

text_file.write ("% s"% search_kw)

попробуйте search_kw [x]

0 голосов
/ 16 марта 2012

Проблема в том, что вы открываете файл для записи.Это может показаться странным, но запись в файл и добавление в файл - это две разные операции.

Когда вы пишете в файл, открытый в режиме записи 'w', Python начинает запись с началафайл, поэтому все, что существует в этом файле, уже может быть перезаписано.

Когда вы пишете в файл, открытый в режиме добавления 'a', Python знает, что в файле есть и другие вещи, которые вы хотитесохранить и записать в файл после того, что там сейчас есть.

попробуйте открыть файл в режиме добавления:

text_file = open("/Users/home/Projects/keyword_file.txt", "a")
...