Как читать и писать файл .txt построчно в python?

ввод.txt -

I am Hungry
call the shopping mall
connected drive

Я хочу прочитать input.txt построчно и отправить его как запрос на сервер, а затем сохранить ответ соответственно. как читать и писать данные построчно?

мой код ниже работает только для одного ввода в input.txt (например: я голоден). Не могли бы вы помочь мне, как это сделать для множественного ввода?

Запрос :

fileInput = os.path.join(scriptPath, "input.txt")
if not os.path.exists(fileInput):
    print "error message"
    Error_Status = 1
    sys.exit(Error_Status)
else:
    content = open(fileInput, "r").read()
    if len(content):
        TEXT_TO_READ["tts_input"] =  content
        TEXT_TO_READ = json.dumps(TEXT_TO_READ)
    else:
        print "error message 2"

request = Request()

Ответ :

res = h.getresponse()
data = """MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=--Nuance_NMSP_vutc5w1XobDdefsYG3wq
""" + res.read()

msg = email.message_from_string(data)

for index, part in enumerate(msg.walk(), start=1):
    content_type = part.get_content_type()
    payload = part.get_payload()

    if content_type == "audio/x-wav" and len(payload):
        with open('Sound_File.pcm'.format(index), 'wb') as f_pcm:
            f_pcm.write(payload)
    elif content_type == "application/json":
        with open('TTS_Response.txt'.format(index), 'w') as f_json:
            f_json.write(payload)

person sam    schedule 03.02.2016    source источник
comment
не могли бы вы рассказать мне, как?   -  person sam    schedule 03.02.2016


Ответы (2)


Чтобы не было глупости, давайте реализуем ваше общее описание того, что должно произойти: «Я хочу прочитать input.txt построчно и отправить его как запрос на сервер, а затем сохранить ответ соответственно. '' :

for line in readLineByLine('input.txt'):
    sendAsRequest(line)
    saveResponse()

Из того, что я могу понять из вашего вопроса, у вас уже есть основные функции sendAsRequest(line) и saveResponse() (возможно, под другим именем), но вам не хватает функции readLineByLine('input.txt'). Вот:

def readLineByLine(filename):
    with open(filename, 'r') as f: #Use with statement to correctly close the file when you read all the lines.
        for line in f:    # Use implicit iterator over filehandler to minimize memory used
            yield line.strip('\n') #Use generator, to minimize memory used, removing trailing carriage return as it is not part of the command.
person DainDwarf    schedule 03.02.2016
comment
fileInput как input.txt в соответствии с моим кодом, но как принять ваш ответ в моем коде? - person sam; 03.02.2016
comment
не могли бы вы рассказать мне, как? - person sam; 03.02.2016
comment
У вас есть проблемы с изоляцией частей вашего кода и рефакторингом их как функций? Или у вас есть проблемы с написанием кода, использующего функции с синтаксисом def functionName(args)? - person DainDwarf; 03.02.2016

В основном вы можете просто:

with open('filename') as f:
     for line in f.readlines():
         print line

Вывод будет:

Я голоден

позвонить в торговый центр

подключенный диск

Объяснение оператора with вы можете прочитать здесь: http://effbot.org/zone/python-with-statement.htm

person Maxim Dunavicher    schedule 03.02.2016
comment
использование readlines() неэффективно и может привести к ошибкам памяти. Просто переберите файл: docs.python.org/ 2/учебник/ - person bruno desthuilliers; 03.02.2016