内の文字列を検索するにはどうすればなどfile_+0.txt, file_[]1.txt, file_~8.txt
私が一定数まで行方不明files_*.txt
を見つけたいPythonは - 大きなファイル
のような文字列を持つことができ、大きなファイルを持っています。私は、以下のファイルおよび数5を与えた場合、それが欠けているものが1 and 4
asdffile_[0.txtsadfe
asqwffile_~2.txtsafwe
awedffile_[]2.txtsdfwe
qwefile_*0.txtsade
zsffile_+3.txtsadwe
であることを教えてください私は、ファイルのパスと番号を与えることができますしているPythonスクリプトを書いて、例えば
その番号まで見つからないすべてのファイル名を私に渡します。
私のプログラムは小さなファイルでも動作します。しかし、10000までファイル番号を持つことができる大きなファイル(12MB)を渡すと、ハングアップするだけです。ここで
が私の現在のPythonコードが
#! /usr/bin/env/python
import mmap
import re
def main():
filePath = input("Enter file path: ")
endFileNum = input("Enter end file number: ")
print(filePath)
print(endFileNum)
filesMissing = []
filesPresent = []
f = open(filePath, 'rb', 0)
s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
for x in range(int(endFileNum)):
myRegex = r'(.*)file(.*)' + re.escape(str(x)) + r'\.txt'
myRegex = bytes(myRegex, 'utf-8')
if re.search(myRegex, s):
filesPresent.append(x)
else:
filesMissing.append(x)
#print(filesPresent)
print(filesMissing)
if __name__ == "__main__":
main()
である私は0から9999までのファイルを持つことができます12メガバイトのファイルを与えるときに出力がハング
$python findFileNumbers.py
Enter file path: abc.log
Enter end file number: 10000
出力の小さなファイルのための(上記と同じ例)
$python findFileNumbers.py
Enter file path: sample.log
Enter end file number: 5
[0, 2, 3]
[1, 4]
- どのように私はトンを作ることができます大きなファイルのための彼の仕事?
- Pythonスクリプトの代わりにこれらの結果を得るための良い方法はありますか?
ありがとうございます!
大きな点では何ですか?検索するファイルの数、ファイル内のデータのサイズ、名前の長さ? – Mark
12MBのファイルを入力し、検索可能なファイル数は10,000です – SyncMaster
名前を取得するだけでファイルをメモリにマップする必要はありません。 – Mark