Периодическое создание каталогов и записи в файл ошибок в Python 2.7

У меня периодически возникают проблемы с созданием каталогов и записью в файлы. У меня два ноутбука под управлением Windows 10 Home Edition (оба с версией ОС 1709, сборка 16299.371). Обе машины являются 64-битными. Старый процессор Intel i7 с тактовой частотой 2,2 ГГц, новый с тактовой частотой 2,59 ГГц и дисководом SS.) Оба работают под управлением Python 2.7. Мой код отлично работает на старой машине каждый раз. Нет проблем. Однако на новой машине чаще всего возникают ошибки при создании каталога и / или записи в файл. Поскольку код отлично работает на старой машине, но не на новой, похоже, это аппаратная проблема, из-за которой Python выдает ошибку. Я в растерянности и пытаюсь понять это в течение 4 дней. Вот код и ошибки. Если у кого-то есть идеи, буду очень признателен. Заранее спасибо за ваши усилия. Код:

import os, time, errno
from RESOURCES.GUI_by_flav import *


myscreen = pygame.display.set_mode((640,480),pygame.RESIZABLE,32)


buttons = [] # Buttons are objects created in another file.
# NOTE: Sometimes increasing the numbdr of buttons causes the problem.
buttons.append(MyButton(myscreen,70,10,50,20,"Button1",12) )
buttons.append(MyButton(myscreen,70,40,50,20,"Button2",12) )
buttons.append(MyButton(myscreen,70,40,50,20,"Button3",12) )
buttons.append(MyButton(myscreen,70,40,50,20,"Button4",12) )
buttons.append(MyButton(myscreen,70,10,50,20,"Button5",12) )
buttons.append(MyButton(myscreen,70,40,50,20,"Button6",12) )
buttons.append(MyButton(myscreen,70,40,50,20,"Button7",12) )
buttons.append(MyButton(myscreen,70,40,50,20,"Button8",12) )

# CREATE A DIRECTORY AND FILE TO STORE GUI ELEMENTS
cwd = os.getcwd()                           # get current working directory
resource_dir = os.path.join(cwd, "RESOURCES1")   # add new folder name to    path
resource_dir = resource_dir.replace('\\','/')         # change forward slash  to back slash
print(resource_dir)
print("Folder exists: ", os.path.exists(resource_dir)) # Does folder already  exist?

if not os.path.exists(resource_dir):
    try:
        os.makedirs(resource_dir)           # if not, then create it
    except OSError as e:
        if e.errno != errno.EEXIST:
            raise
        print("Directory '",resource_dir,"' was NOT created")

file_path = resource_dir +"/gui_elements.txt"     # add a file to folder


try:
    with open(file_path,'w+') as f:              # open the file
        myString = "buttons = []"
        f.write('%s\n' % (myString))

        try:
            for b in buttons:
                myString = "button.append(MyButton(myscreen," + str(b.x) + ','+ str(b.y) + ',' + str(b.w) + ',' + str(b.h) + ',' + '"' + b.text + '"' + ',' + '12)'
                print (myString)
                f.write('%s\n' % (myString))

        except OSError as e:
            if e.errno != errno.EEXIST:
                raise        

except OSError as e:
    if e.errno != errno.EEXIST:
        raise

печать ("Файл НЕ записан!!!")

ОШИБКИ СОЗДАНИЯ ВРЕМЕННОЙ КАТАЛОГИ: Вот распечатка, которую я получаю иногда, когда директория, RESOURCES1, не существует. Я получаю эту ошибку периодически. Иногда все отлично работает. ======= RESTART: C:/Users/flavio/Desktop/PROJECTS/ComProject/test1.py ====== C: / Users / flavio / Рабочий стол /PROJECTS/ComProject/RESOURCES1 ('папка существует: ', Ложь)

Traceback (most recent call last):
  File "C:/Users/flavio/Desktop/PROJECTS/ComProject/test1.py", line 28, in   <module>
    os.makedirs(resource_dir)           # if not, then create it
  File "C:\Python27-64\lib\os.py", line 157, in makedirs
    mkdir(name, mode)
WindowsError: [Error 2] The system cannot find the file specified: 'C:/Users   /flavio/Desktop/PROJECTS/ComProject/RESOURCES1'

ПРЕРЫВАЮЩАЯСЯ ЗАПИСЬ В ОШИБКИ ФАЙЛА: Вот ошибка, которую я иногда получаю при записи в файл. Простое изменение количества строк, которые я пишу, иногда приводит к ошибке, иногда нет. Это кажется случайным. И опять же, такого не бывает на моей старой машине. Трассировка (последний вызов был последним): файл "C:/Users/flavio/Desktop/PROJECTS/ComProject/test1.py", строка 67, в печати ("Готово с циклом")

IOError: [Errno 9] Неверный дескриптор файла

Для полноты и риска получения слишком большого количества информации из моего класса RESOURCES.GUI_by_flav RESOURCES.GUI_by_flav импортировано следующее: MyButton: def init(self, surface, x, y, w, h, text, fsize = 16): self.surface = поверхность self.UP_DN = "UP" self.lw = lw = 4 #line_width self.bw = bw = 4 self.x = x self.y = y self.w = w self.h = h

        self.text=text
        self.fsize = fsize

        self.rect = Rect(x-bw+1,y-bw+1,w+2*bw,h+2*bw)
        self.face = Rect(x,y,w,h)
        self.pt1 = x,y
        self.pt2 = x+w,y
        self.pt3 = x+w,y+h
        self.pt4 = x,y+h

        self.button_pos = "UP"
        self.face_color = (150,150,150)

    def draw(self):
        self.face = Rect(self.x,self.y,self.w,self.h)
        self.pt1 = self.x, self.y
        self.pt2 = self.x + self.w, self.y
        self.pt3 = self.x + self.w, self.y + self.h
        self.pt4 = self.x , self.y + self.h
        self.rect = Rect(self.x - self.bw + 1, self.y - self.bw + 1,
                     self.w + 2 * self.bw, self.h + 2 * self.bw)
        if self.UP_DN == "UP":
            self.draw_up()
        elif self.UP_DN == "DN":
            self.draw_down()            

    def draw_up(self):
        self.UP_DN = "UP"
        surface = self.surface
        face_color = self.face_color
        ln_color=Color('black')
        lw = 4 #Line width
        #draw box
        pygame.draw.rect(surface, ln_color, self.rect)
        pygame.draw.rect(surface, face_color, self.face)
        #Highlight
        pygame.draw.line(surface, (255, 255, 255), (self.pt1), (self.pt2))
        pygame.draw.line(surface, (255, 255, 255), (self.pt2), (self.pt3))
        pygame.draw.line(surface, (100, 100, 100), (self.pt1), (self.pt4))
        pygame.draw.line(surface, (100, 100, 100), (self.pt4), (self.pt3))
        # WRITE LABEL
        my_font = pygame.font.SysFont('arial', self.fsize)
        message1_sf = my_font.render(self.text, True, Color('white'))
        msgHt =message1_sf.get_height()
        msgWd = message1_sf.get_width()
        msgX = (self.rect.width - msgWd)/2
        msgY = (self.rect.height - msgHt)/2
        surface.blit(message1_sf, self.rect.move(msgX,  msgY))

    def draw_down(self):
        self.UP_DN = "DN"
        surface = self.surface
        face_color = self.face_color
        ln_color=Color('black')
        lw = 4 #Line width
        #Draw Box
        pygame.draw.rect(surface, ln_color, self.rect)
        pygame.draw.rect(surface, face_color, self.face)
        #Highlight
        pygame.draw.line(surface, (255, 255, 255), (self.pt1), (self.pt4))
        pygame.draw.line(surface, (255, 255, 255), (self.pt4), (self.pt3))
        pygame.draw.line(surface, (100, 100, 100), (self.pt1), (self.pt2))
        pygame.draw.line(surface, (100, 100, 100), (self.pt2), (self.pt3))
        # WRITE LABEL
        my_font = pygame.font.SysFont('arial', 20)
        message1_sf = my_font.render(self.text, True, Color('white'))
        msgHt =message1_sf.get_height()
        msgWd = message1_sf.get_width()
        msgX = (self.rect.width - msgWd)/2
        msgY = (self.rect.height - msgHt)/2
        surface.blit(message1_sf, self.rect.move(msgX,  msgY+1))     

0 ответов

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