在Python中组合正则表达式文件

时间:2016-03-13 23:11:23

标签: python regex

我有48个.rx.txt文件,我正在尝试使用Python将它们组合在一起。我知道当你组合.rx.txt文件时,你必须包含一个“|”在文件之间。

这是我正在使用的代码:

import glob

read_files = filter(lambda f: f!='final.txt' and f!='result.txt', glob.glob('*.txt'))


with open("REGEXES.rx.txt", "wb") as outfile:
    for f in read_files:
        with open(f, "rb") as infile:
            outfile.write(infile.read())
            outfile.write('|')

但是当我尝试运行时,我收到了这个错误:

Traceback (most recent call last):
  File "/Users/kosay.jabre/Desktop/Password Assessor/RegexesNEW/CombineFilesCopy.py", line 10, in <module>
    outfile.write('|')
TypeError: a bytes-like object is required, not 'str'

关于如何将文件合并到一个文件中的任何想法?

2 个答案:

答案 0 :(得分:3)

您的REGEXES.rx.txt以二进制模式打开,但是outfile.write('|')您尝试将字符串写入而不是二进制。似乎所有文件都包含文本数据,因此不要将它们打开,而是将二进制文件打开为文本,即:

with open("REGEXES.rx.txt", "w") as outfile:
    for f in read_files:
        with open(f, "r") as infile:
            outfile.write(infile.read())
            outfile.write('|')

答案 1 :(得分:1)

python2.7.x 中,您的代码可以正常运行,但对于 python3.x ,您应该在字符串{中添加 b 前缀{ {1}}将字符串标记为二进制字符串,然后我们将能够以二进制文件模式编写它。

然后 python3.x 的代码将是:

outfile.write(b'|')