根据 python 中源文件中的条件,将文件写入带有附加文本的新文件
Wrtie a file to a new file with addition text based on criteria within source file in python
我正在尝试获取一个 Python 脚本,它将打开一些文本文件,读取内容,每次它从列表中找到一个单词时,用新文本阻止它,然后将其写入每个文件一个新文件。
现在,我可以让它将所有源文件写入一个文件,这是我下面的脚本,但我不确定如何继续为每个源文件创建一个新文件。
import os
KeyWords=["Magic","harry","wand"]
rootdir = "C:\books"
fileslist = []
##blanks file and preps for new data
fileout = open(rootdir+"\output\newfile.txt","w")
print (fileout)
fileout.write("Start of file\n\nLocation of output: "+rootdir+"\output \n\nFiles that are being Processed:\n\n")
fileout.close()
def sourcelist(fileslist):
file=open(fileslist,"r")
fileout=open(rootdir+"\output\newfile.txt", "a")
for line in file:
if any(word.lower() in line.lower() for word in KeyWords):
print("Word Found\n\n" + '\t'+line + "\nEnd\n")
fileout.write("<<<SEARCH TERM FOUND>>>\n\n" + '\t'+line + "\n<<<END OF BLOCK>>>\n")
else:
#print('\t'+line) #No need to print the lines with no Key words in
fileout.write('\t'+line)
#return #not sure what return does?
for root, dirs, files in os.walk(rootdir):
dirs.clear()
for file in files:
filepath = root + os.sep + file
if filepath.endswith(".txt"):
fileslist.append(filepath)
for path in fileslist:
sourcelist(path)
print("\n".join(fileslist))
with open(rootdir+"\output\newfile.txt","a") as output:
output.write("\n".join(fileslist)+"\n\n\n")
output.close()
从整体上回答这个问题有点困难,但这里有一个通用的方法。
我有以下文件结构:
hp_extracts: # directory
hp_parser.py
-- inps/
-- harry_1.txt
-- harry_2.txt
-- outs/
<nothing>
inps/harry_1.txt
的内容:
When Harry got his wand it was Magic
something something magic something
something harry something
inps/harry_2.txt
的内容:
magic something something
something
harry something something
这是hp_parser.py
的内容:
import os
all_files = os.listdir('inps/')
keywords=["magic","harry","wand"]
for file in all_files:
with open('inps/{}'.format(file)) as infile, open('outs/{}'.format(file), 'w') as outfile:
for line in infile:
#print(line)
for word in line.split():
if word.lower() in keywords:
line = line.replace(word, '<<<SEARCH TERM FOUND>>> {} <<<END OF BLOCK>>>'.format(word))
outfile.write(line)
我正在尝试获取一个 Python 脚本,它将打开一些文本文件,读取内容,每次它从列表中找到一个单词时,用新文本阻止它,然后将其写入每个文件一个新文件。
现在,我可以让它将所有源文件写入一个文件,这是我下面的脚本,但我不确定如何继续为每个源文件创建一个新文件。
import os
KeyWords=["Magic","harry","wand"]
rootdir = "C:\books"
fileslist = []
##blanks file and preps for new data
fileout = open(rootdir+"\output\newfile.txt","w")
print (fileout)
fileout.write("Start of file\n\nLocation of output: "+rootdir+"\output \n\nFiles that are being Processed:\n\n")
fileout.close()
def sourcelist(fileslist):
file=open(fileslist,"r")
fileout=open(rootdir+"\output\newfile.txt", "a")
for line in file:
if any(word.lower() in line.lower() for word in KeyWords):
print("Word Found\n\n" + '\t'+line + "\nEnd\n")
fileout.write("<<<SEARCH TERM FOUND>>>\n\n" + '\t'+line + "\n<<<END OF BLOCK>>>\n")
else:
#print('\t'+line) #No need to print the lines with no Key words in
fileout.write('\t'+line)
#return #not sure what return does?
for root, dirs, files in os.walk(rootdir):
dirs.clear()
for file in files:
filepath = root + os.sep + file
if filepath.endswith(".txt"):
fileslist.append(filepath)
for path in fileslist:
sourcelist(path)
print("\n".join(fileslist))
with open(rootdir+"\output\newfile.txt","a") as output:
output.write("\n".join(fileslist)+"\n\n\n")
output.close()
从整体上回答这个问题有点困难,但这里有一个通用的方法。
我有以下文件结构:
hp_extracts: # directory
hp_parser.py
-- inps/
-- harry_1.txt
-- harry_2.txt
-- outs/
<nothing>
inps/harry_1.txt
的内容:
When Harry got his wand it was Magic
something something magic something
something harry something
inps/harry_2.txt
的内容:
magic something something
something
harry something something
这是hp_parser.py
的内容:
import os
all_files = os.listdir('inps/')
keywords=["magic","harry","wand"]
for file in all_files:
with open('inps/{}'.format(file)) as infile, open('outs/{}'.format(file), 'w') as outfile:
for line in infile:
#print(line)
for word in line.split():
if word.lower() in keywords:
line = line.replace(word, '<<<SEARCH TERM FOUND>>> {} <<<END OF BLOCK>>>'.format(word))
outfile.write(line)