繁体   English   中英

我的python程序正在将源代码写入文件,而不是正确的输出

[英]My python program is writing source code to a file instead of proper output

我想制作一个文本文件合并/重复行删除程序,以进行一些练习,而我正准备关闭计算机,等待奇异之处,因为对于此代码的行为方式我没有任何世俗的想法是。

关键是我已经做到了。 我完成了脚本,工作正常。 它合并了文件,进行了重复检测……然后我添加了评论,然后一切都变得疯狂了。 它曾经浏览文本文件列表,打开每个文本文件,并将它们的行读入合并文件中。 为了进行测试,我有两个文件wl1.txt和wl2.txt。 这些是它们的内容:

wl1.txt:

test
test1
word
word1
wordword
entry
python
random

wl2.txt:

yellow
red
bluw
test
test1
random
black
Black

这是我要用来隔离此事件的代码段:

fileList = ['C:\lists\wl\wl1.txt','C:\lists\wl\wl2.txt']
outfile = open("C:\lists\wl\wlmerge.txt",'w+')

for fname in fileList:
    infile = open(fname,"r")                                                    
    for line in infile:
        print line                                                         
        outfile.write(line)                                                
    print outfile.read()

在运行代码wlmerge.txt之前,该文本不存在,并且输入文本文件中除了我列出的内容外没有其他行。 这就是我得到的输出:

test

test1

word

word1

wordword

entry

python

random
mat__': 1, 'runit': 1, 'remove_selection': 1, '__str__': 1, '_file_line_helper': 1, '_asktabwidth': 1, '_filename_to_unicode': 1, 'open_stack_viewer': 1, 'get_region': 1, 'cut': 1, 'open_module': 1, 'showerror': 1, '__class__': 1, 'smart_indent_event': 1, 'set_status_bar': 1, 'about_dialog': 1, 'indent_region_event': 1, 'load_extension': 1, 'set_region': 1, '_close': 1, 'cancel_callback': 1, 'postwindowsmenu': 1, '__subclasshook__': 1, 'newline_and_indent_event': 1, 'toggle_debugger': 1, 'saved_change_hook': 1, 'eof_callback': 1, 'get_warning_stream': 1, 'get_standard_extension_names': 1, 'stop_readline': 1, 'guess_indent': 1, 'ResetFont': 1, 'rmenu_check_paste': 1, 'replace_event': 1, 'unload_extensions': 1, 'del_word_right': 1, 'close_debugger': 1, '_EditorWindow__extra_help_callback': 1, 'python_docs': 1, 'fill_menus': 1, 'flush': 1, 'close': 1, 'center_insert_event': 1, '__setattr__': 1, 'set_notabs_indentwidth': 1, 'help_dialog': 1, 'set_saved': 1, 'get_selection_indices': 1, 'open_debugger': 1, 'tabify_region_event': 1, 'comment_region_event': 1, 'get_var_obj': 1, 'find_selection_event': 1, '_rmcolorizer': 1, 'goto_line_event': 1, 'load_standard_extensions': 1, 'reset_undo': 1, 'long_title': 1, 'paste': 1, 'close2': 1, 'reset_help_menu_entries': 1, 'set_indentation_params': 1, 'open_class_browser': 1, 'endexecuting': 1, 'rmenu_check_cut': 1, '__delattr__': 1, '_addcolorizer': 1, '__repr__': 1, 'close_hook': 1, 'home_callback': 1, 'right_menu_event': 1, 'getlineno': 1, 'apply_bindings': 1, 'restart_shell': 1, '_make_blanks': 1, 'get_geometry': 1, 'ApplyKeybindings': 1, 'get_tabwidth': 1, 'ResetColorizer': 1, 'open_path_browser': 1, 'filename_change_hook': 1, '_build_char_in_string_func': 1, 'isatty': 1, 'find_event': 1, 'set_close_hook': 1, '__reduce__': 1, 'find_in_files_event': 1, 'untabify_region_event': 1, 'new_callback': 1, 'getvar': 1, 'copy': 1, 'rmenu_check_copy': 1, 'center': 1, 'writelines': 1, 'recall': 1, 'load_extensions': 1, 'showprompt': 1, 'close_event': 1, 'reindent_to': 1, 'askinteger': 1, '__hash__': 1, 'RemoveKeybindings': 1, 'dedent_region_event': 1, 'linefeed_callback': 1, 'is_char_in_string': 1, '__getattribute__': 1, 'move_at_edge_if_selection': 1, 'beginexecuting': 1, 'enter_callback': 1, 'short_title': 1, 'getwindowlines': 1, 'smart_backspace_event': 1, '__sizeof__': 1, 'set_tabwidth': 1, 'find_again_event': 1, '__init__': 1, 'del_word_left': 1, 'get_saved': 1, '__reduce_ex__': 1, '__new__': 1, 'select_all': 1, 'gotoline': 1, 'view_restart_mark': 1, 'change_indentwidth_event': 1, 'write': 1, 'set_debugger_indicator': 1, 'config_dialog': 1, 'set_warning_stream': 1, 'setvar': 1, 'createmenubar': 1, 'begin': 1, 'toggle_tabs_event': 1, 'askyesno': 1, 'ispythonsource': 1, 'resetoutput': 1, 'goto_file_line': 1, 'readline': 1, 'toggle_jit_stack_viewer': 1, 'make_rmenu': 1, '_EditorWindow__recent_file_callback': 1, 'uncomment_region_event': 1, 'update_recent_files_list': 1, 'set_line_and_column': 1})
find_again_event'
p118
I1
sS'__init__'
p119
I1
sS'del_word_left'
p120
I1
sS'askyesno'
p121
I1
sS'__reduce_ex__'
p122
I1
sS'__new__'
p123
I1
sS'getlineno'
p124
I1
sS'__format__'
p125
I1
sS'view_restart_mark'
p126
I1
sS'change_indentwidth_event'
p127
I1
sS'write'
p128
I1
sS'set_debugger_indicator'
p129
I1
sS'config_dialog'
p130
I1
sS'set_warning_stream'
p131
I1
sS'setvar'
p132
I1
sS'createmenubar'
p133
I1
sS'begin'
p134
I1
sS'toggle_tabs_event'
p135
I1
sS'help_dialog'
p136
I1
sS'ispythonsource'
p137
I1
sS'resetoutput'
p138
I1
sS'goto_file_line'
p139
I1
sS'readline'
p140
I1
sS'toggle_jit_stack_viewer'
p141
I1
sS'make_rmenu'
p142
I1
sS'center'
p143
I1
sS'uncomment_region_event'
p144
I1
sS'short_title'
p145
I1
sS'set_line_and_column'
p146
I1
stp147
tp148
.

任何帮助将不胜感激。

你打开outfile与模式w+ ,这将截断输出。 您应该摆脱print outfile.read()行,因为outfile已经位于缓冲区的末尾,因此read()并没有执行您认为应该做的事情。

如果你真的想读outfile你(在你遍历文件,但仍然)写入到它之后,你需要倒转到文件的开始。 您可以使用outfile.seek(0)

如果要以不带截断的读取和写入方式打开outfile ,则应使用r+作为模式。

只需删除print outfile.read()行:

fileList = ['wl1.txt','wl2.txt']
outfile = open("wlmerge.txt",'w+')

for fname in fileList:
    infile = open(fname,"r")                                                    
    for line in infile:
        print line                                                         
        outfile.write(line)                 

这对我来说很好。

编辑

编写后阅读:

outfile.close()
with open('wlmerge.txt', 'r') as f:
    read_data = f.read()

print read_data

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM