Как быстро прочитать 25K небольшой текстовый файл с Python - PullRequest
1 голос
/ 07 октября 2010

Я загружаю многие html store в os, теперь получаю их содержимое и извлекаю данные, которые мне нужны для сохранения в mysql, я использую традиционный загрузочный файл один за другим, это неэффективная стоимость всего за 8 минут.

любой совет приветствуется

g_fields=[
 'name',
 'price',
 'productid',
 'site',
 'link',
 'smallImage',
 'bigImage',
 'description',
 'createdOn',
 'modifiedOn',
 'size',
 'weight',
 'wrap',
 'material',
 'packagingCount',
 'stock',
 'location',
 'popularity',
 'inStock',
 'categories',
]   @cost_time
def batch_xml2csv():
    "批量将xml导入到一个csv文件中"
    delete(g_xml2csv_file)
    f=open(g_xml2csv_file,"a")
    import os.path
    import mmap
    for file in glob.glob(g_filter):
    print "读入%s"%file
    ff=open(file,"r+")
    size=os.path.getsize(file)
    data=mmap.mmap(ff.fileno(),size)
    s=pq(data.read(size))
    data.close()
    ff.close()
    #s=pq(open(file,"r").read())
    line=[]
    for field in g_fields:
        r=s("field[@name='%s']"%field).text()
        if r is None:
            line.append("\N")
        else:
            line.append('"%s"'%r.replace('"','\"'))
    f.write(",".join(line)+"\n")
    f.close()
    print "done!"

я пробовал mmap, похоже, не сработало

Ответы [ 3 ]

1 голос
/ 07 октября 2010

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

Если у вас есть 25,0000 из что-нибудь , будет быстрее, если вы поместите его в базу данных с интеллектуальным индексом - даже если вы сделаете поле индекса именем файлабудет быстрее

Если у вас есть несколько каталогов, которые опускаются на N уровней ниже, база данных все равно будет быстрее.

0 голосов
/ 07 октября 2010

Если алгоритм верен, использование модуля psyco иногда может сильно помочь. Однако он не работает с Python 2.7 или Python 3 +

0 голосов
/ 07 октября 2010

Вы можете сканировать файлы, загружая их в несколько потоков, если вы используете scrapy .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...