下面是我编写的用于在python中修改文本文件的代码段。文本文件将使用分析软件cbecc-res打开。
split_cbecc
和join_cbecc
分别读取和写入一个文本文件。 run_changes
接收文本和更改字典,并将更改应用于文本。
'''
split_cbecc, join_cbecc
input:
path - location of a text file to be modified
output:
filedata - text file saved as a variable
'''
def split_cbecc(path):
with open(path, 'r', encoding='utf-8') as file:
filedata = file.read()
filedata = filedata.split('..')
for i in range(len(filedata)):
filedata[i] = filedata[i].strip()
return filedata
def join_cbecc(path, filedata):
with open(path, 'w+', encoding='utf-8') as file:
file.write("\n ..\n\n".join(filedata))
'''
run_changes
input:
filedata - a text file saved in a variable
changed_objects - a dictionary of changes to make
output:
filedata
'''
def run_changes(filedata, changed_objects):
for i in range(len(filedata)):
t_data = filedata[i].split('\n')
for j in range(len(changed_objects)):
if changed_objects[j].name in t_data[0]:
for k in range(len(t_data)):
for key in iter(changed_objects[j].attrib()):
if key in t_data[k]:
t_data[k] = " "+changed_objects[j].attrib()[key]
filedata[i] = "\n".join(t_data)
return filedata
运行代码后,文件将按预期进行修改,但是cbecc-res被挂起并试图打开它(原始文件的备份打开得很好)。任务管理器中有一个cbecc-res进程,但已在后台进程中列出。什么都没出现。
将修改后的文件与原始备份进行比较,除了我所做的更改外没有其他区别。
如果我使用vim打开程序输出然后保存,则cbecc-res可以很好地打开它。再次,文件的文本保持不变。在文件属性对话框中,修改后的文件和备份文件的文件权限看起来相同。
CBECC-res有一个日志文件,如果打开文件或运行分析时发生任何错误,我都可以读取,但是尽管明显存在某些问题,也不会记录任何错误。
我不知道在哪里寻找这些麻烦的潜在原因。也许你可以帮忙。