拆分和创建具有不同名称的新文件(python)

时间:2010-11-26 19:15:17

标签: python parsing split

我需要编写一个这样的程序: 编写一个程序,读取文件.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 :(得分:0)

考虑使用ConfigParser。然后你必须手动拆分每个值,如你所描述的那样。

答案 1 :(得分:0)

建议:

  1. 您的行不以“faces”开头,因此您的第二行将无法按您希望的方式工作。根据文件其余部分的外观,您可能只需要检查该行是否为空。

  2. 要获取您需要的信息,请先在','处拆分,然后从那里开始工作

  3. 尝试一个解决方案:你需要的元素似乎总是在它们之前有一个','所以你可以先从','符号开始,然后从1-index 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

答案 2 :(得分: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'))

这仍在进行中。只是想问一下它是否正确。

编辑: 仍然不知道很热,将粗体字分开。这种分裂功能对我来说真的很痛苦。