0

ファイルハンドルでファイルを開いた後、私のファイルにはテーブルやその他のデータが含まれています。特定の場所に向けたいですか?たとえば、「ピン値」という単語を見つけたら、そこを指す必要があります。ファイル内の特定の場所を指す方法は?

4

3 に答える 3

3

そのフレーズがあるファイル内の行のバイトインデックスを取得するつもりだと思います。

使用できますfile.seek()

with open(file) as f: # open the file
    for line in f: # iterate the lines
        if 'Pin value' in line: # find the line you want
            f.seek(-len(line), 1) # moves the pointer to the start of the line
            print f.tell() # tells you the index of the byte you are at

ここに関数があります:

def seek_to(file_handle, phrase):
    file_handle.seek(0) # reset to start
    for line in file_handle:
        if phrase in line:
            f.seek(-len(line)+line.find(phrase), 1)

関数に file_handle とフレーズを指定すると、file_handles の現在のポインターがフレーズの直前の場所に移動します。そして、他に何もしません。

于 2013-09-04T08:53:25.630 に答える
2

https://stackoverflow.com/a/4999741/248140は、ファイルにランダム (非シーケンシャル) アクセスする方法を示しています。ただし、 「ピン値」がファイル内のどこにあるかを突き止める必要があることに注意してください。つまり、ファイルの先頭にある種のインデックスが必要になるため、「本当にこの地域に適したファイル形式を使用してください。

ファイルのすべての内容を一度にメモリに格納したい場合は、プログラムの開始時にファイルを読み取り、それを最適な内部表現に変換することを検討してください。

于 2013-09-04T08:53:45.633 に答える