2010-11-26 7 views
0

このようなプログラムを書く必要があります: ファイルを読み込み、名前が同じ新しいファイルに画像をコピーするプログラムを作成しますこれらの写真の人物の識別番号(例:8ff985a43603dbf8.jpg)。画像に人がさらにいる場合は、より多くのコピーを作成します。人物がより多くの写真にある場合、後で写真の前のコピーを上書きする。より多くの写真に8ff985a43603dbf8という人物が現れることがある場合、この名前のファイルは1つだけ存在します。 .picasa.iniという簡単なファイルがあると推測する必要があります。分割して別の名前の新しいファイルを作成する(Python)

私が構成されていた.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ファイルを太字のファイルにリンクする必要があると思います。

+1

表示されている 'picasa.ini'ファイルの各行のデータ形式をよりよく説明する必要があります。 – martineau

答えて

0

ConfigParserを使用することを検討してください。次に、あなたが説明するように、各値を手で分割する必要があります。

0

提案:

  1. あなたの行は始まらないので、あなたの二行目は、あなたがそれが望むように動作しません、「顔」。残りのファイルの外観に応じて、その時点で行が空であるかどうかを確認するだけで済みます。

  2. そこから必要な情報で、第1の分割「」と仕事を得るために、ソリューションの

試してください:あなたは常に「」彼らの前に、これを持っているように見える必要がある要素'、'記号で分割し、1インデックスのelemnt [1 ::]からすべてを取ることから始めることができます。そして、私が思っていることが正しいとすれば、あなたはそれらの要素をもう一度二度分割します: ";"その0のインデックス要素とその ""をとり、再び0のインデックス要素をとります。私が取得するために

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
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')) 

これはまだ進行中の作業です。それが正しいかどうか尋ねたいだけです。

編集: 太字の単語をそこから分割することは、まだ分かりません。この分割機能は本当に私の痛みです。

関連する問題