Форум сайта python.su
Python 2.7
мне нужно записать в блокнот ip пк, который запустил программу. затем, чтобы программа проверяла настоящее ip между ip, который в блокноте.
у меня получилось так:
# encoding: utf-8 import socket ip = socket.gethostbyname_ex(socket.gethostname())[2] save = open("save.txt","w") s = save.read() if str(s) == 0: save.write(str(ip)) sm = save.read() if str(sm) == str(ip): print u"Совпало" else: print u"не совпало" save.close()
Отредактировано XFaost (Июнь 6, 2016 12:58:35)
Прикреплённый файлы: save.txt (1 байт)
Офлайн
и?
Офлайн
у меня так не получается: ошибка. исправьте, если можете
Отредактировано XFaost (Июнь 6, 2016 11:08:40)
Офлайн
1. Оформите код как положено используя для этого соответствующий тег!
2. Покажите какую ошибку вам пишет
Офлайн
Traceback (most recent call last):
File “vtest.py”, line 5, in <module>
s = save.read()
IOError: File not open for reading
Python 2.7!
я понимаю, что программа не может прочитать файл, если задан режим “w”. Но мне нужно сделать так, чтобы программа могла и читать файл, и записывать туда данные.
Отредактировано XFaost (Июнь 6, 2016 12:59:36)
Офлайн
ну так разнесите логику работы!
назначьте переменной значение чтения файла!
А дальше условие проверяющее ету переменную - если она не ноль - то пишем в файл и так далее
Хотя можно еще открыть как r+w
Встроенная функция open(file, mode=’r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True) — Открывает файл и возвращает соответствующий поток.
Вторым аргументом (все что в скобочках функции) является режим, в котором мы открываем файл. Есть такие режимы:
‘r’ — открытие на чтение (выступает значением по умолчанию).
‘w’ — открытие на запись, содержимое файла удаляется, если файла с таким именем нет, то он автоматически создается.
‘x’ — открытие на запись, если файл не существует, иначе исключение.
‘a’ — открытие на дозаписывание, информация добавляеться в конец уже существующей информации в файле.
‘b’ — открытие в двоичном режиме.
‘t’ — открытие в текстовом режиме (выступает значением по умолчанию).
‘+’ — открытие на чтение и запись.
Офлайн
ZerG
ну так разнесите логику работы! назначьте переменной значение чтения файла! А дальше условие проверяющее ету переменную - если она не ноль - то пишем в файл и так далееХотя можно еще открыть как r+w Встроенная функция open(file, mode=’r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True) — Открывает файл и возвращает соответствующий поток.Вторым аргументом (все что в скобочках функции) является режим, в котором мы открываем файл. Есть такие режимы:‘r’ — открытие на чтение (выступает значением по умолчанию).‘w’ — открытие на запись, содержимое файла удаляется, если файла с таким именем нет, то он автоматически создается.‘x’ — открытие на запись, если файл не существует, иначе исключение.‘a’ — открытие на дозаписывание, информация добавляеться в конец уже существующей информации в файле.‘b’ — открытие в двоичном режиме.‘t’ — открытие в текстовом режиме (выступает значением по умолчанию).‘+’ — открытие на чтение и запись.
Отредактировано XFaost (Июнь 6, 2016 15:37:09)
Офлайн
# -*- coding: utf-8 -*- import socket ip = socket.gethostbyname_ex(socket.gethostname())[2] print 'ip = ', str(ip) save = open("save.txt", "r+") s = save.read() if s: if str(s) == str(ip): print u"Совпало" else: # Тут будетвсе время дописывать инфу save.write(str(ip)) print u"Не совпало" else: print u"Новая запись" save.write(str(ip)) save.close()
Офлайн
Очень благодарен вам за вашу помощь…
Отредактировано XFaost (Июнь 6, 2016 16:53:50)
Офлайн
я так понимаю, чтобы программа работала идеально - нужно ее писать через Python 3Нет. Что бы программа работала идеально нужно ее идеально написать
import socket ip = socket.gethostbyname_ex(socket.gethostname())[2] with open('save.txt', 'r') as result: if str(ip) == str(result.read()): print 'Совпало' else: print 'Не совпало' with open('save.txt', 'w') as result: result.write(str(ip))
Отредактировано ZerG (Июнь 6, 2016 17:00:36)
Офлайн