Есть задача:
Написать скрипт для формирования файла а-ля файл хостс:
#! usr/bin/env Python26
#-*-coding: UTF-8-*-
import os
try:
fileHosts=open(os.environ['USERPROFILE']+r"\hosts",'r+')
fileHosts.seek(0) # указатель в начало файла во избежании глюков
tempList=[]
for line in fileHosts.readlines():
tempTuple=tuple(line.split()) # делим прочитанную из файла строку по пробелу, получаем список из 2х строк, кот. далее конвертируем в кортеж
tempList.append(tempTuple) # добавляем новый элемент (кортеж) в список
dictHosts=dict(tempList) # создаём словарь из списка кортежей
fileHosts.close()
print '-|%s|%s|%s|-' % ('IP','-'*30, 'Hostname'), '\n', '-'*45
for key, value in dictHosts.items():
print '%s %30s' % (key, value)
except IOError:
fileHosts=open(os.environ['USERPROFILE']+r"\hosts",'w')
fileHosts.close()
fileHosts=open(os.environ['USERPROFILE']+r"\hosts",'r+')
fileHosts.seek(0)
entry=raw_input('Please, enter new \'ip_addr hostname\' pair: ')
#entry+='\n'
if fileHosts.read(1)!='':
entry='\n'+entry
fileHosts.writelines(entry)
fileHosts.close()
Первый раз всё чудесно, выполнение скрипта успешно завершается.
Далее запускаем его снова (файл уже есть, и в нём строка), соотв. заходим в try, он нам выводит содержимое словаря и далее опять ввод. И вот после этого второго ввода запись в файл генерирует исключение, непонятного вида:)
-|IP|------------------------------|Hostname|-
---------------------------------------------
5.5.5.5 asdfsadf
Please, enter new 'ip_addr hostname' pair: abcdrdfg asdfasdfsadf
Traceback (most recent call last):
File "C:\Users\Alexandr\workspace\acad_dev\src\file.py", line 27, in <module>
fileHosts.writelines(entry)
IOError: [Errno 0] Error
заранее прошу прощения за ?:%-код. Питон начал изучать пару дней назад:)