无法让它循环。需要一行一行

时间:2013-10-22 16:55:29

标签: python regex

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"

1 个答案:

答案 0 :(得分: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)

这将有效地读取文件,而不必先将所有内容加载到内存中。

注意:我还将您的路径设置为原始字符串(通过在其前面添加r)以防止Python尝试解释以\反斜杠开头的转义序列; \n\r\t\b在普通字符串中都有特殊含义。对于Windows文件路径使用原始字符串通常是个好主意,尽管您也可以使用正斜杠或双反斜杠字符。