для скрининга файла я следующий код в двух разных каталогах:Python же скрипт открывает файлы, чтобы в одном директории, а не в другом
import os, re
g=open('results_1.txt', 'w') #Other has 'results_2.txt'
for filename in os.listdir('.'):
if filename.startswith("f"):
with open(filename, 'r') as f:
content =[line.rstrip() for line in f]
A = filter(lambda x: 'KeyWord_1 :' in x, content)
B = filter(lambda x: 'KeyWord_2 :' in x, content)
print >> g,filename,
for item in A:
print >> g,item,
for item in B:
print >> g,item,
g.close()
Оба каталоги имеют аналогичный файл (чтобы быть разобранной мой сценарий) Соглашение об именах , Поэтому файлы выглядят так: file_1000.txt
, file_100.txt
, file_101.txt
, ....., file_1.txt
, ...... file_9.txt
.
Я изменяю сценарий только для изменения имени файла результатов. Но в одном каталоге файлы сортируются от _1 до _1000, а затем файл результатов имеет соответствующий порядок, а другой - нет. Зачем?
Прошу прощения, что это связано с моей работой, и я могу дать любую специфику.
P.S. Я попробовал отсортированную функцию, и она не работала так, как я хотел.
Это потому, что 'os.listdir' является несортированным. Этот ответ может помочь: http://stackoverflow.com/questions/6773584/how-is-pythons-glob-glob-ordered/6773636#6773636 Также смотрите это: http://stackoverflow.com/questions/ 4813061/nonalphanumeric-list-order-from-os-listdir-in-python – RomanK
Чтобы развернуть комментарий @ RomanK, вот официальная документация для ['os.listdir'] (https://docs.python.org/2 /library/os.html#os.listdir): * Список в произвольном порядке. * – UnholySheep
Хорошо, поэтому, если я правильно понимаю, произвольным, мы должны понимать его как НЕ ДЕТЕРМИНИСТИЧЕСКИЙ! Таким образом, разница в одном каталоге предполагает, что произвольный порядок отличается от другого. Это может быть проблемой. Но все в порядке. – algoProg