windows上的Python 34空输出文件

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

我有一个在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_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
关键字。这样做的好处是,文件套件完成[…]后,文件会正确关闭”()。