Я использую этот код (ответ @user2019716) для преобразования .tif в .jpeg для использования в API обнаружения объектов tensorflow. Раньше я делал конвертацию без проблем, но почему-то сегодня я получаю ошибку No such file or directory: '__0.tif'
и не понимаю, почему это происходит. Я проверил каталог, который я поместил в C:/Users/name/Desktop/phantom80_labelImg/TIF/
, и там есть список .tif
файлов, начиная с __0.tif до __34.tif. Я знаю, что код работает, потому что я использовал его раньше, но я не знаю, почему он сейчас не читает файлы .tif
.
Какие-либо предложения?
import os
from PIL import Image
for infile in os.listdir("C:/Users/name/Desktop/phantom80_labelImg/TIF/"):
print("file : " + infile)
if infile[-3:] == "tif" or infile[-3:] == "bmp" :
# print "is tif or bmp"
outfile = infile[:-3] + "jpeg"
im = Image.open(infile)
print("new filename : " + outfile)
out = im.convert("RGB")
out.save(outfile, "JPEG", quality=90)
C:\Users\name\anaconda3\envs\MaskRCNN_SpeCraft\python.exe C:/Users/name/z/MaskRCNN_SpeCraft/tif_to_jpeg.py
Traceback (most recent call last):
File "C:/Users/name/z/MaskRCNN_SpeCraft/tif_to_jpeg.py", line 12, in <module>
im = Image.open(infile)
File "C:\Users\name\anaconda3\envs\MaskRCNN_SpeCraft\lib\site-packages\PIL\Image.py", line 2891, in open
fp = builtins.open(filename, "rb")
FileNotFoundError: [Errno 2] No such file or directory: '__0.tif'
C:\Users\name\z\MaskRCNN_SpeCraft
file : __0.tif
Process finished with exit code 1
@AdityaChavan Нет, я получаю ту же ошибку.
Для доступности замените код и ошибки текстом.
Закомментируйте остальную часть кода и посмотрите, печатает ли строка print(infile) имена файлов.
Если вы попытаетесь сохранить полный путь, а не просто имя файла, это сработает? то есть вместо того, чтобы просто outfile
делать 'C:/whatever/' + outfile
@AlastairMcCormack, отредактировал сообщение.
В итоге я изменил свой рабочий каталог на конкретную папку, и это сработало. os.chdir("C:/Users/name/Desktop/phantom80_labelImg/TIF/)
. Хотя я не понимаю, зачем мне менять рабочий каталог, если я конкретно указываю, из какой папки я хочу вытащить .tif
???
os.listdir(dir)
возвращает только имена файлов в этом каталоге (документация).
Чтобы открыть файл, вам нужно будет получить полный путь к файлу. Вы можете использовать os.path.join
(документация)
root_dir = "C:/Users/name/Desktop/phantom80_labelImg/TIF/"
for filename in os.lisdir(root_dir):
infile = os.path.join(root_dir, filename)
# rest of your code
Да, это была следующая вещь, которую я только что попробовал, и это сработало. Спасибо за документацию!
Замените / в имени пути на // Это работает?