windows上的Python 34空输出文件
我有一个在windows上运行的Python脚本,它所做的是创建输出测试文件。它创建的文件中经常有一个是完整的空字节,大小正确,就像某个memset文件设置为0一样。 我附加了创建文件的代码:windows上的Python 34空输出文件,python,windows,file,python-3.x,Python,Windows,File,Python 3.x,我有一个在windows上运行的Python脚本,它所做的是创建输出测试文件。它创建的文件中经常有一个是完整的空字节,大小正确,就像某个memset文件设置为0一样。 我附加了创建文件的代码: def write_regression_file(self, regression_tests, excel_name, work_sheet_names): tcl_base_filename = self.output_file_base_name if self.output_file
def write_regression_file(self, regression_tests, excel_name, work_sheet_names):
tcl_base_filename = self.output_file_base_name if self.output_file_base_name !="" else '{}RegressionTests'.format(self.protocol)
regression_test_file = '{}{}_{}.tcl'.format(self.gen_path, tcl_base_filename.replace('Tm',''), excel_name)
full_regresion_test_file = regression_test_file.replace('_'+excel_name, '')
tcl_gen_path = '${}GeneratedPath/'.format(self.protocol.lower())
#
# Create per Excel regression Tcl test file
with open(regression_test_file, 'a') as regression_file:
#
# write sources for excel
for ws_name in work_sheet_names:
sourceline = 'source {}{}.tcl\n'.format(tcl_gen_path, ws_name.replace(' ', '_'))
regression_file.write(sourceline)
header = '\t##########################################################\n'
header += '\t# Regression Tests for Excel file {}\n'.format(excel_name)
header += '\t##########################################################\n'
regression_file.write(header)
#
# write tests
for group, test_list in regression_tests.items():
test_name = 'test' + excel_name.replace(' ', '_') + '_' + group
string_to_write = '\n proc {} {{}} {{\n\t'.format(test_name)
string_to_write += '\n\t'.join(test_list)
string_to_write += '\n }'
regression_file.write(string_to_write)
regression_file.write('\n\n\n\n\n\n')
#
# Source per Excel regression file in full regression test file
all_file_regressions_names = glob.glob(self.gen_path + '*RegressionTests_*.*')
with open(full_regresion_test_file, 'w') as full_reg_file:
for regression_fullpath in all_file_regressions_names:
source_line = 'source ${}GeneratedPath/{}\n'.format(self.protocol.lower(), ntpath.basename(regression_fullpath))
full_reg_file.write(source_line)
错误发生在第二次打开时(一个文件“完整的重新定义测试文件”)
文件中没有包含预期的“source…”字符串,而是充满了b'x\00。不过大小是正确的 你曾经关闭过你的文件吗?我不需要使用“with open()”来处理这个问题,真的-抱歉!“处理文件对象时,最好使用
with
关键字。这样做的好处是,文件套件完成[…]后,文件会正确关闭”()。