Найти - Пользователи
Полная версия: Ошибка в скрипте
Начало » Python для новичков » Ошибка в скрипте
1
halo
Привет!
Подскажите пожалуйста, где я не прав?
 #!/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)
py.user.next
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)

Ошибки на уровне “не знаю, чем имя в питоне отличается от строки в питоне”. Читай книжку хотя бы одну какую-нибудь. В каждой книжке это объясняется на первых страницах.
PEHDOM
а в чем собственно ошибка?
ну вот тут
 while count <= 3:
у тебя бесконечный цикл, если ввели 1 или 2, може всетаки
 count = int(input('''
Выбираем, в какой файл будем писать:
1 - Для Ника
2 - Общий
3 - Выход
'''))
нужно внутри цикла поместить?
halo
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
В общем получилось, но только наполовину…
У меня запись производиться в нужный файл, но:
1. во временном файле сохраняется только последняя запись
2. при этом все в конечном файле затирается
halo
Разобрался, Вопрос снят
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB