После вызова pygame.init() Python не может создавать или записывать файлы

Недавно я выяснил, что это происходит только в моей системе, что заставляет меня отказаться от формы вопроса, как это исправить. Это потому, что я думаю, что это невозможно / очень трудно решить из-за того, что на моем компьютере играют разные переменные, плюс это будет отличаться для всех. Кроме того, это не поможет никому, кроме меня, который не одобряет Stackru. Вместо этого я перенес свой вопрос на: каковы некоторые из факторов, которые не работают, и как мы можем предотвратить их / сделать это более надежным для всех систем, или это странная одноразовая ошибка, которая встречается редко. Ниже я оставил следующую документацию о том, что я сделал для устранения проблемы в моей системе, а также другую информацию, которую я обнаружил, надеюсь, это может помочь обнаружить потенциальные ошибки, чтобы предотвратить это в будущем. (Пожалуйста, дайте мне знать, если это не возможно решить, и я удалю вопрос) также, пожалуйста, скажите мне, если это не так, как вы делаете, и если мне нужно удалить этот вопрос и сделать новый, спасибо (я новичок в Stackru и программирование наглядно).

Назад История (не обязательно): я делаю игру в Pygame, и я закончил ее, но в конце я хотел, чтобы она была полноэкранной. После быстрого поиска в гугле я узнал, как это сделать, и реализовал его. После запуска игры я осознал границы краев экрана, где по-прежнему исходные настройки, и моя игра в значительной степени опиралась на это для использования обнаружения столкновений по краям. И так как это отличается для каждого экрана, я подумал, что могу позволить пользователю самим определять размер экрана, поэтому я разработал систему, в которой пользователь контролирует размер экрана с помощью клавиш со стрелками (экран pygame) и сообщает программе, когда он подходит на экране полностью, система затем берет эти значения и сохраняет их. Однако, так как это мучительный процесс, который нужно завершить перед началом каждой игры, я хотел, чтобы эти данные были постоянными, и решил, что самый простой способ сделать это - сохранить их (записать) в файл, а затем, когда игра начнется, посмотрите, есть ли в файле какие-либо данные для пользователя и использует ли он только эти значения. Неудачно я обнаружил, что это бросало ошибки в пигме. Я был сбит с толку, потому что я делал это в других проектах раньше, чтобы перепроверить, я скопировал вставил код, где я читал и записывал в файлы, и, конечно же, это работало Это привело меня к мысли, что возникла проблема с интеграцией Pygame.

Предвидение: После тщательного исследования я все еще не смог найти какую-либо информацию по этой теме, за исключением, возможно, ошибки: OSError: [Errno 9] Bad file descriptor Обычно причиной внешней программы было закрытие программы, а затем удаление переменной, а затем переменная, пытающаяся закрыть файл, но обнаружив, что файл уже закрыт. Кроме того, я считаю, что случайно, но редко работает программа.

После долгих экспериментов я свел проблему к конкретному, после того как pygame.init() был вызван, как показано в этом примере кода:

Перед вызовом pygame.init():

import pygame
f=open("file.txt","r")
test=f.read()
print("File: "+test)
f.close()
f=open("file.txt","w")
f.write("changed!")
f.close()
f=open("file.txt","r")
test=f.read()
print("File: "+test)
f.close()
input()
pygame.init()

Результат:

pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
File: hello
File: changed!

После вызывается pygame.init():

import pygame
pygame.init()
f=open("file.txt","r")
test=f.read()
print("File: "+test)
f.close()
f=open("file.txt","w")
f.write("changed!")
f.close()
f=open("file.txt","r")
test=f.read()
print("File: "+test)
f.close()
input()

Результат:

pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
File: changed!
OSError: [Errno 9] Bad file descriptor

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\sengu\Documents\Python\JCC\Pygame\Before init.py", line 9, in <module>
    f.close()
OSError: [Errno 9] Bad file descriptor

Зная о том, почему эта ошибка вызвана, я подумал удалить другой f.close() и просто оставить последний, и на самом деле это избавило от ошибок! но к сожалению результат программы не был достигнут:

import pygame
pygame.init()
f=open("file.txt","r")
test=f.read()
print("File: "+test)
f=open("file.txt","w")
f.write("changed!")
f=open("file.txt","r")
test=f.read()
print("File: "+test)
f.close()
input()

Результат:

pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
File: hello
File: hello

Так что это не записывает в файл, но по какой-то причине и не выдает ошибку. Наконец, я должен отметить, что это только самые последовательные результаты, как упоминалось ранее, иногда случайно и непредсказуемо (по крайней мере для меня) это работает. Любая помощь о том, как достичь этого, будет принята с благодарностью.

0 ответов

Другие вопросы по тегам