我在python中有一个大文本文件。我想使用关键字将其分成2个。关键字上方的文件必须复制到一个文件,而文件的其余部分复制到另一个。我想将这些具有不同扩展名的文件保存在同一目录中。请帮助我。
此外,如何将文件从一种格式转换为另一种格式? 例如,将.txt转换为.xml或将.cite转换为.xml吗?
答案 0 :(得分:0)
要回答问题的第一部分,您可以在阅读文本并将其写入新文件后简单地使用split
函数:
with open('oldfile.txt', 'r') as fh:
text_split = fh.read().split(keyword)
with open('newfile' + extension1, 'w') as fh:
fh.write(text_split[0])
with open('newfile' + extension2, 'w') as fh:
# If you know that the keyword only appears once
# you can changes this to fh.write(text_split[1])
fh.write(keyword.join(text_split[1:]))
问题的第二部分要困难得多。我不知道您使用的是哪种文件格式,但是txt文件只是纯文本,没有特定的结构。 XML文件不能从任意格式转换。如果要使用.txt格式的XML文件,则可以将格式更改为XML,但是如果要转换CSV等格式,建议您使用lxml之类的库。>
编辑:如果文件不适合内存,则可以遍历以下行:
with open('oldfile.txt', 'r') as fh:
fh_new = open('newfile' + extension1, 'w')
keyword_found = False
line = fh.readline()
while line:
if not keyword_found:
text_split = line.split(keyword)
fh_new.write(text_split[0])
if len(text_split) > 1:
fh_new.close()
keyword_found = True
fh_new = open('newfile' + extension2, 'w')
fh_new.write(text_split[1:])
else:
fh_new.write(line)
line = fh.readline()
fh_new.close()
答案 1 :(得分:-1)
关于拆分文件,应该这样做(考虑文件的大小):
import mmap
regex=b'your keyword'
f=open('your_path_to_the_main_file','rb')
s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
first_occurance_position=s.find(regex)
if(first_occurance_position==0)
print('this is a mistake')
f.close()
quit()
buf_size=0xfff
first_part_file=open('your_path_to_the_first_part'+'.its_extension','wb')
second_part_file=open('your_path_to_the_second_part'+'.its_extension','wb')
i=0;
if(buf_size>len(regex)):
buf_size=len(regex)
b=f.read(buf_size)
while(b):
i=i+buf_size
first_part_file.write(b)
if(i==first_occurance_position):
break
if(first_occurance_position-i<buf_size):
buf_size=first_occurance_position-i
b=f.read(buf_size)
b=f.read(0xffff)
while(b):
second_part_file.write(b)
b=f.read(0xffff)
first_part_file.close()
second_part_file.close()
f.close()