Разделение слов и создание новых файлов с разными именами (python) - PullRequest
0 голосов
/ 26 ноября 2010

Мне нужно написать программу, подобную этой: Написать программу, которая читает файл .picasa.ini и копирует изображения в новые файлы, имена которых совпадают с идентификационными номерами человека на этих изображениях (например, 8ff985a43603dbf8.jpg).Если на картинке больше людей, она делает больше копий.Если человек находится на нескольких фотографиях, позже переопределите более ранние копии изображений;если человек 8ff985a43603dbf8 может появиться на нескольких фотографиях, будет существовать только один файл с таким именем.Вы должны предположить, что у нас есть простой файл .picasa.ini.

У меня есть .ini, который состоит из:

[img_8538.jpg]
faces=rect64(4ac022d1820c8624),**d5a2d2f6f0d7ccbc**
backuphash=46512

[img_8551.jpg]
faces=rect64(acb64583d1eb84cb),**2623af3d8cb8e040**;rect64(58bf441388df9592),**d85d127e5c45cdc2**
backuphash=8108
...

Это хороший способзапустить эту программу?

for line in open('C:\Users\Admin\Desktop\podatki-picasa\.picasa.ini'):
    if line.startswith('faces'):
        line.split() # what must I do here to split the bolded words?

Есть ли лучший способ сделать это?Помните, что файл .jpg должен быть создан с новым именем, поэтому я думаю, что я должен связать текущий файл .jpg с жирным шрифтом.

Ответы [ 3 ]

0 голосов
/ 26 ноября 2010

Предложения:

  1. Ваши строки не начинаются с «граней», поэтому ваша вторая строка не будет работать так, как вы этого хотите. В зависимости от того, как выглядит остальная часть файла, вам может потребоваться только проверить, пуста ли строка в этой точке.

  2. Чтобы получить необходимую информацию, сначала разделите на ',' и поработайте оттуда

Попробуйте найти решение: кажется, что элементы, которые вам нужны, всегда имеют перед собой символ «,», поэтому вы можете начать с разбиения на знак «,» и получения всего, начиная с элемента с 1 индексом [1 ::] , Тогда, если то, что я считаю правильным, вы снова разбиваете эти элементы дважды: на «;» и взять элемент 0-index этого и в этом "", снова принимая элемент 0-index.

for line in open('thingy.ini'):
if line != "\n":
    personelements = line.split(",")[1::]
    for person in personelements:
        personstring = person.split(";")[0].split(" ")[0]
        print personstring

у меня работает, чтобы получить:

d5a2d2f6f0d7ccbc

2623af3d8cb8e040

d85d127e5c45cdc2

0 голосов
/ 26 ноября 2010
import ConfigParser
import string
config = ConfigParser.ConfigParser()
config.read('C:\Users\Admin\Desktop\podatki-picasa\.picasa.ini')
imgs = []
for item in config.sections():
    imgs.append(config.get(item, 'faces'))

Эта работа еще не завершена.Просто хочу спросить, правильно ли это.

edit: До сих пор не знаю жарко, чтобы разбить жирные слова оттуда.Эта разделенная функция действительно причиняет мне боль.

0 голосов
/ 26 ноября 2010

Рассмотрите возможность использования ConfigParser . Затем вам придется разделить каждое значение вручную, как вы описываете.

...