Уведомления

Группа в Telegram: @pythonsu

#1 Май 7, 2020 00:04:31

halo
Зарегистрирован: 2020-05-07
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка в скрипте

Привет!
Подскажите пожалуйста, где я не прав?

 #!/usr/bin/python3
import os
os.system('cls' if os.name == 'nt' else 'clear')
import random
rnd = random.randint(1000,9999) # Создаем переменную с помощью генератора случайных чисел
w_temp_file = open('/tmp/rnd', 'tw', encoding='utf-8') # Создаем временный файл с переменной 'rnd'
r_temp_file = open('/tmp/rnd').read() # Переменная для чтения данных, с последующей передачей в другой файл
nik_f = open('/etc/squid/lists/deny_list.txt', 'w') # Файл блокировок для Ника
our_f = open('/etc/squid/lists/BlackList.txt', 'w') # Общий файл блокировок
nik_ = '/etc/squid/lists/deny_list.txt'
our_ = '/etc/squid/lists/BlackList.txt'
'''
Данный цикл, позволяем добавить
одну или несколько строк
во временный файл
'''
count = 1
while count <= 2:
        os.system('cls' if os.name == 'nt' else 'clear')
        print('============================================================================')
        print('||                                                                        ||')
        print('||   Вас приветствует мастер добавления web-ресурсов в файлы блокировок   ||')
        print('||                                                                        ||')
        print('============================================================================')
        answer = input('Введите имя сайта' + '\n')
        w_temp_file.write("answer")
        count = int(input('Повторить? 1 - Да, 2 - Нет' + '\n'))
        if count == 1:
                continue
        elif count == 2:
                w_temp_file.close()
                break
print(r_temp_file)
'''
Этот цикл, позволяет выбрать,
в какой файл блокировок
добавить содержимое, созданного
ранее, временного файла
'''
count = int(input('''
Выбираем, в какой файл будем писать:
1 - Для Ника
2 - Общий
3 - Выход
'''))
while count <= 3:
        if count == 1:
                nik_f.write("r_temp_file")
                nik_f.close()
                print("Запись произведена в файл - " + "nik_")
        elif count == 2:
                our_f.write("r_temp_file")
                our_f.close()
                print("Запись произведена в файл - " + "our_")
        elif count == 3:
                #count = 3
                exit(0)

Офлайн

#2 Май 7, 2020 01:32:20

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

Ошибка в скрипте

halo
  
w_temp_file = open('/tmp/rnd', 'tw', encoding='utf-8') # Создаем временный файл с переменной 'rnd'
r_temp_file = open('/tmp/rnd').read() # Переменная для чтения данных, с последующей передачей в другой файл
Дай этим файлам разные имена. Не надо трогать один файл двумя open()'ами одновременно.

Если тебе нужен обмен какой-то между частями программы, это делается по-другому.

Если тебе нужно чистить экран, писать в определённых местах экрана, используй модуль curses.
https://docs.python.org/3/library/curses.html

Короче, тебе надо сначала учиться это всё делать, а потом это делать.

halo
  
        print('============================================================================')
        print('||                                                                        ||')
        print('||   Вас приветствует мастер добавления web-ресурсов в файлы блокировок   ||')
        print('||                                                                        ||')
        print('============================================================================')
Вот это правильно, этому ты научился. Всё остальное - какой-то бред. Где ошибки? Везде ошибки.

halo
  
        answer = input('Введите имя сайта' + '\n')
        w_temp_file.write("answer")
Вот это что такое? Читаешь в переменную, а пишешь в файл строковой литерал.

Надо так
  
        w_temp_file.write(answer)

Ошибки на уровне “не знаю, чем имя в питоне отличается от строки в питоне”. Читай книжку хотя бы одну какую-нибудь. В каждой книжке это объясняется на первых страницах.



Отредактировано py.user.next (Май 7, 2020 01:37:57)

Офлайн

#3 Май 7, 2020 01:34:03

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Ошибка в скрипте

а в чем собственно ошибка?
ну вот тут

 while count <= 3:
у тебя бесконечный цикл, если ввели 1 или 2, може всетаки
 count = int(input('''
Выбираем, в какой файл будем писать:
1 - Для Ника
2 - Общий
3 - Выход
'''))
нужно внутри цикла поместить?



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Май 7, 2020 01:36:39)

Офлайн

#4 Май 7, 2020 09:35:21

halo
Зарегистрирован: 2020-05-07
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка в скрипте

py.user.next
Ошибки на уровне “не знаю, чем имя в питоне отличается от строки в питоне”. Читай книжку хотя бы одну какую-нибудь. В каждой книжке это объясняется на первых страницах.
Прошу не ругаться
Я неделю, как начал питона изучать.
Дошел до работы со строками.
Идея в том, чтобы создать некий список, я подумал создать рандомный файл и использовать его.
Если есть вариант использовать список, где каждая строка на новой строке, буду только рад, если подскажите как.
А дальше, содержимое этого списка (файла), передается существующему файлу, в зависимости от выбора.

PEHDOM
а в чем собственно ошибка?
Ошибка, как уже указал py.user.next, в неправильной работе с файлами.
Traceback (most recent call last):
File "./add_links.py", line 50, in <module>
nik_f.write("r_temp_file")
ValueError: I/O operation on closed file.

как я понимаю, питон ругается на то, что я пытаюсь работать с закрытым файлом.

Отредактировано halo (Май 7, 2020 09:38:23)

Офлайн

#5 Май 7, 2020 10:46:47

halo
Зарегистрирован: 2020-05-07
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка в скрипте

В общем получилось, но только наполовину…
У меня запись производиться в нужный файл, но:
1. во временном файле сохраняется только последняя запись
2. при этом все в конечном файле затирается

Офлайн

#6 Май 7, 2020 11:56:01

halo
Зарегистрирован: 2020-05-07
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка в скрипте

Разобрался, Вопрос снят

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version