2016-02-13 5 views
1

мне нужно, чтобы извлечь информацию заголовка изображения из нескольких файлов JPG в текст или файл журнала, однако при запуске кода ниже я получаю сообщение об ошибке:Сохранение информации заголовка изображения в текстовый файл

for root, dirs, filenames in os.walk(topdir): 
    for f in filenames: 
    print(topdir) 
    print(f) 
    log = open(topdir + f, 'r') 
    data = p.get_json(log) 
    formatted_data =((json.dumps(data, sort_keys=True,indent=4, separators=(',', ':')))) 
    print(data) 
    print ("There are " + str(len(header_dict)) + " items on the menu.") 

Я получаю следующее сообщение об ошибке, когда я бегу:

C:/Users/richie/Desktop/work/imagej/test images and files/XX1 
image_D2016-02-03T15-27-56-763207Z_4.jpg 
Traceback (most recent call last): 
File "C:\Users\richie\Desktop\work\header_dir.py", line 25, in <module> 
log = open(topdir + f, 'r') 
FileNotFoundError: [Errno 2] No such file or directory: 'C:/Users/richie/Desktop/work/imagej/test images and files/XX1image_D2016-02- 03T15-27-56-763207Z_4.jpg' 

Как открыть файлы изображений, чтобы функция в цикл для запуска против него?

+0

журнал = открыт (TOPDIR + "/" + е, 'г') –

ответ

1

Ваша проблема кроется в этом коде;

topdir + f 

Во-первых, вы должны использовать join по дорожкам, а не +. Последний не вставляет разделитель между контуром и файлом. Во-вторых, вы должны присоединиться к имени файла с root, а не с topdir.

for root, dirs, files in os.walk(topdir): 
    paths = [os.path.join(root, f) for f in files] 
    for p in paths: 
     log = open(p) 
     # et cetera 
+0

Спасибо за это - изменил мой код, но я получаю следующее сообщение об ошибке, которую я Предположим, что это связано с фактическим анализом файла изображения: Traceback (последний последний вызов): Файл «C: \ Users \ richie \ Desktop \ work \ header_dir.py», строка 27, в data = p. get_json (log) AttributeError: объект 'str' не имеет атрибута 'get_json' –

+0

Извините - ошибка в этом последнем комментарии - ошибка, которую я получаю: Traceback (последний последний вызов): Файл «C: \ Users \ richie \ Desktop \ work \ header_dir.py», строка 25, в data = x.get_json (log) Файл «C: \ Python \ Python35 -32 \ lib \ site-packages \ pyexifinfo \ pyexifinfo.py ", строка 44, в get_json filename = os.path.abspath (filename) Файл" C: \ Python \ Python35-32 \ lib \ ntpath.py " , строка 535, в abspath path = _getfullpathname (путь) ТипError: _getfullpathname: незаконный тип для параметра пути –

+0

Я напечатал значение, назначенное для журнала - '<_io.TextIOWrapper name =' C:/Users/richie/Desktop/work/imagej/тестовые изображения и файлы/XX1 \\ image_D2016-02-03T15-27-56-763207Z_4.jpg 'mode =' r 'encoding =' cp1252 '>'. похоже, проблема связана с этим путем. –

0

Рабочий код:

import pyexifinfo as x 
import json 
import os 
from tkinter import * 
from tkinter.filedialog import askopenfilename 

def askdirectory(): 
dirname = filedialog.askdirectory() 
return dirname 

topdir = askdirectory() 

for root, dirs, files in os.walk(topdir): 
paths = [os.path.join(root, f) for f in files] 
for p in paths: 
    data = x.get_csv(p) 
    print(p) 
    print(data) 
    formatted_data =((json.dumps(data, sort_keys=True,indent=4, separators=(',', ':')))) 
    f = open('Xheader_info_XML.txt','a') 
    f.write(p) 

    f.write(formatted_data) 

f.close() 
Смежные вопросы