0
import re
ftplist = open('C:\Documents and Settings\jasong\My Documents\GooleDrive\lookup.txt','r')
txt = ftplist.read()

re1='([a-z]:\\\\(?:[-\\w\\.\\d]+\\\\)*(?:[-\\w\\.\\d]+)?)'

rg = re.compile(re1,re.IGNORECASE|re.DOTALL)
m = rg.search(txt)
if m:
    winpath1=m.group(1)
    print "("+winpath1+")"+"\n"
4

1 に答える 1

2

ファイル オブジェクトを直接ループします。

with open(r'C:\Documents and Settings\jasong\My Documents\GooleDrive\lookup.txt','r') as ftplist:
    for line in ftplist:
        match = rg.search(line)

これにより、最初にすべてをメモリにロードする必要なく、ファイルが効率的に読み取られます。

注: また、rPython がバックスラッシュで始まるエスケープ シーケンスを解釈しようとするのを防ぐために、パスを生の文字列にしました (先頭に追加することにより) \\n\r\tおよび\bすべては、通常の文字列では特別な意味を持ちます。通常、Windows ファイル パスには未加工の文字列を使用することをお勧めしますが、スラッシュやバックスラッシュを 2 つ使用することもできます。

于 2013-10-22T16:57:52.340 に答える