我有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'
关于如何将文件合并到一个文件中的任何想法?
答案 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'|')