繁体   English   中英

Python:读取文件,直到行与二进制模式下的字符串匹配

[英]Python: Read a file until a line matches a string in binary mode

好的,所以我看到了其他问题,但我遇到了一个独特的问题。 我必须以二进制模式打开文件才能读取它(我真的不明白为什么,但它有效)。 我可以轻松打印出文件的行没问题。 但是当我尝试使用re.search查找特定行时,我遇到了问题,因为我有一个字符串模式和字节对象。 这是我到目前为止:

input_file = open(input_file_path,  'rb',  0)

for line in input_file:
    if re.search("enum " + enum_name,  line, 0):
        print("Found it")
        print(line)
        exit()

enum_name是一个用户输入所以我真的需要知道如何在搜索以二进制模式打开的文件时使用字符串和变量(或者如何以二进制模式打开此文件,我得到的不能有不处于二进制模式时的无缓冲文本I / O错误)。 我已经尝试为搜索二进制文件制作模式,但是当我这样做时,我不知道如何处理变量。

您需要使用字节字符串作为正则表达式中的模式,如下所示:

if re.search(b"enum " + enum_name.encode('utf-8'), line):
    ...

这里的enum_name.encode('utf-8')用于将用户输入转换为bytes对象,具体取决于您可能需要使用差异编码的环境。

请注意,如果你的正则表达式真的很简单,那么你可能只需要使用子字符串搜索。

你不需要重新。 尝试

if "enum " + enum_name in line:

用'b'读书主要是关于行结尾。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM