[英]Combine txt files with file names
我想将 txt 文件合并为一个 txt 文件。 下面的代码工作正常。 但唯一的问题是我不明白哪些字符串来自哪个txt。
import glob
read_files = glob.glob("*.txt")
with open("result.txt", "wb") as outfile:
for f in read_files:
with open(f, "rb") as infile:
outfile.write(infile.read())
我希望结果看起来像:
file1.txt
string1
string2
file2.txt
string3
string4
使用pickle
将文件名dump
到result.txt
import glob
import pickle
read_files = glob.glob("*.txt")
with open("abc.txt", "wb") as outfile:
for f in read_files:
with open(f, "rb") as infile:
pickle.dump(f, outfile)
outfile.write(infile.read())
您可以将dump
用于 outfile.write() 部分,如下所示: pickle.dump(infile.read(), outfile)
注意:最好将.dat
用于二进制文件,将.txt
用于纯文本文件。
下面的代码完全按照我的意愿工作。 首先,我尝试打印保存文件名的 f 变量。 outfile.write(f)
但由于我在 "rb" 模式下打开文件,我得到了错误: TypeError: a bytes-like object is required, not 'str'
。 根据朋友的建议,我将代码更改为outfile.write(f.encode())
。 在这里,我不知道encode()
方法是做什么的。 也许有人解释。 然后,我使用outfile.write("\n".encode())
在文件名之后开始新行。 最终代码是:
import glob
read_files = glob.glob("*.txt")
with open("result.txt", "wb") as outfile:
for f in read_files:
with open(f, "rb") as infile:
outfile.write(f.encode())
outfile.write("\n".encode())
outfile.write(infile.read())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.