no such file or directory File os python
Выдает ошибку no such file or directory
File "c:/Users//AppData/Local/Programs/Algoritmika/vscode/data/extensions/algoritmika.algopython-20220718.163731.0/data/student/1276433/143002/main.py", line 97, in showChosenImage
workimage.loadImage(workdir,filename)
File "c:/Users//AppData/Local/Programs/Algoritmika/vscode/data/extensions/algoritmika.algopython-20220718.163731.0/data/student/1276433/143002/main.py", line 82, in loadImage
self.image = Image.open(image_path)
File "C:\Users\\AppData\Local\Programs\Algoritmika\algovenv\lib\site-packages\PIL\Image.py", line 2878, in open
fp = builtins.open(filename, "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'ball.png'
Код:
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import os
from PIL import Image
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.cur_dir = ''
self.resize(1000, 700)
self.setWindowTitle('Easy Editor')
global ql
ql = QLabel('Картинка', self)
self.left = QPushButton('Лево', self)
self.right = QPushButton('Право', self)
self.zerkalo = QPushButton('Зеркало', self)
self.rezkost = QPushButton('Резкость', self)
self.ch_b = QPushButton('Ч/б', self)
self.papka = QPushButton('Папка', self)
global listwidget
listwidget = QListWidget(self)
listwidget.setGeometry(50, 80, 150, 600)
ql.setGeometry(250, 250, 100, 50)
self.papka.setGeometry(50, 30, 150, 30)
self.left.setGeometry(250, 600, 100, 30)
self.right.setGeometry(400, 600, 100, 30)
self.zerkalo.setGeometry(550, 600, 100, 30)
self.rezkost.setGeometry(700, 600, 100, 30)
self.ch_b.setGeometry(850, 600, 100, 30)
self.papka.clicked.connect(self.showFilenameList)
listwidget.currentRowChanged.connect(showChosenImage)
global workdir
workdir = ''
def showFilenameList(self):
workdir = QFileDialog.getExistingDirectory()
extensions1 = ['.jpg','.jpeg','.png','.gif','.bmp']
filenames = self.filter(os.listdir(workdir),extensions1)
listwidget.clear()
for filename in filenames:
listwidget.addItem(filename)
def filter(self, files, extensions1):
result = []
for filename in files:
for ext in extensions1:
if filename.endswith(ext):
result.append(filename)
return result
class ImageProcessor():
def __init__(self):
self.image = None
self.dir = None
self.filename = None
self.save_dir = 'Modified/'
def do_bw(self):
self.image = self.image.convert('L')
self.saveImage()
image_path = os.path.join(self.dir,self.save_dir,self.filename)
self.showImage(image_path)
def saveImage(self):
path = os.path.join(self.dir,self.save_dir)
if not(os.path.exists(path) or os.path.isdir(path)):
os.mkdir(path)
image_path = os.path.join(path,self.filename)
self.image.save(image_path)
def loadImage(self, dir, filename):
self.dir = dir
self.filename = filename
image_path = os.path.join(dir,filename)
self.image = Image.open(image_path)
def showImage(self,path):
ql.hide()
pixmapimage =QPixmap(path)
w,h = ql.age.width(),ql.height()
pixmapimage = pixmapimage.scaled(w,h,Qt.KeepAspectRatio)
ql.setPixmap(pixmapimage)
ql.show()
workimage = ImageProcessor()
def showChosenImage():
if listwidget.currentRow() >= 0:
filename = listwidget.currentItem().text()
workimage.loadImage(workdir,filename)
image_path = os.path.join(workimage.dir,workimage.filename)
workimage.showImage(image_path)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
ex = MainWindow()
ex.show()
sys.exit(app.exec_())
Источник: Stack Overflow на русском