Я пишу сценарий, который имеет два входа:Чтение и запись файлов в Python
- файл, содержащий список имен,
- другой файл (может быть пустым или непустым)
Цель сценария - взять имена из первого файла, получить доступ к определенному API и получить информацию о каждом имени, а затем записать эту информацию во второй файл. Если второй файл уже содержит информацию, сценарий читает последнюю строку написанного файла, находит эту запись в первом файле и затем начинается с этой записи. Однако я столкнулся с проблемой, когда дело доходит до чтения и записи во второй файл.
Когда я устанавливаю второй тип файла на «r +», а затем выполняю печать на file_two.read(), он отображает содержимое второго файла. Когда я делаю другую печать на самой следующей строке, она показывает файл как пустой. Кроме того, когда я устанавливаю тип файла «a +», он показывает файл как полностью пустой оба раза, хотя я могу четко видеть, что информация в текстовом файле действительно есть. Кто-нибудь знает, что происходит?
Вот фрагмент кода, который обрабатывает запись:
def write_to_file(filename, users):
pages = range(0, len(users) - 100, 100)
for page in pages:
user_names = get_users(users[page: page+100])
lines = [format_user(user) for user in user_names]
output_text = '\n'.join(lines)
with filename as output_file:
output_file.write(output_text.encode('utf-8'))
и вот сегмент кода, который вызывает вышеприведенную функцию.
file_one = args.file1
file_two = args.file2
users = read_names_automatic(file_one)
write_to_file(file_two, users)
Is 'с именем файла как output_file:' опечатка? Я думаю, вы имеете в виду 'с открытым (filename, 'a +') как output_file:'. – modocache
файл уже был открыт ранее в скрипте с помощью argparse, этот код просто записывает всю информацию в файл, а затем закрывает файл после его завершения. – user1389884