2014-12-31 3 views
0

Я создаю корпус из репозитория. Я загружаю текст из репозитория в формате pdf, конвертирую его в текстовые файлы и сохраняю. Тем не менее, я пытаюсь найти хороший способ назвать эти файлы.Создание уникальных имен

Чтобы получить имена файлов я сделать это: (генератор записей представляет собой объект из пакета серпа, который я использую, чтобы получить доступ ко всем записям в хранилище)

for record in records: 
      record_data = [] # data is stored in record_data 
      for name, metadata in record.metadata.items(): 
       for i, value in enumerate(metadata): 
        if value: 
         record_data.append(value) 
      file_path = '' 
      fulltext = '' 
      for data in record_data: 
       if 'Fulltext' in data: 
        fulltext = data.replace('Fulltext ', '') 
        file_path = '/' + os.path.basename(data) + '.txt' 
        print fulltext 
        print file_path 

инструкция печати на два последние строки:

https://www.duo.uio.no/bitstream/handle/10852/34910/1/Bertelsen-Master.pdf 
/Bertelsen-Master.pdf.txt 
https://www.duo.uio.no/bitstream/handle/10852/34912/1/thesis-output.pdf 
/thesis-output.pdf.txt 
https://www.duo.uio.no/bitstream/handle/10852/9976/1/gartmann.pdf 
/gartmann.pdf.txt 
https://www.duo.uio.no/bitstream/handle/10852/34174/1/thesis-mariusno.pdf 
/thesis-mariusno.pdf.txt 
https://www.duo.uio.no/bitstream/handle/10852/9285/1/thesis2.pdf 
/thesis2.pdf.txt 
https://www.duo.uio.no/bitstream/handle/10852/9360/1/OMyhre.pdf 

Как вы можете видеть, что я добавить .txt до конца исходного файла и хочу использовать это имя для сохранения файла. Тем не менее, многие файлы имеют одинаковое имя файла, например thesis.pdf. Один из способов, который я решил решить, состоял в том, чтобы добавить несколько случайных чисел к имени или иметь число, которое увеличивается на каждую запись и использует его, например: thesis.pdf.124.txt (добавление 124 к имени).

Но это не выглядит очень хорошо, и хранилище огромно, поэтому в конце концов у меня будет достаточно большое количество номеров для каждого имени файла. Какие-нибудь умные предложения о том, как я могу это решить?

Я видел предложения, подобные использованию модуля времени. Я думал, может быть, я могу использовать регулярное выражение или другую технику для извлечения части имени (так что все имена одинаково длинны), а затем создать метод, который добавляет строку в каждый файл, положенный на URL-адрес файла, который должен быть уникальным.

ответ

1

Одна вещь, которую вы можете сделать, - вычислить уникальный хэш файлов, например. с MD5 или SHA1 (или любым другим), ср. this article. Однако для большого количества файлов это может стать довольно медленным.

Но вы действительно не видите, чтобы касаться файлов в этом фрагменте кода. Для генерации некоторого уникального идентификатора вы можете использовать uuid и поместить его где-нибудь в имя.

+0

Только то, что я искал, будет использовать пакет uuid, всегда интересно видеть, что ядро ​​python имеет большую часть того, что вам нужно! –

Смежные вопросы