在执行print语句时将输出写入文件时出现问题

2024-09-24 08:31:51 发布

您现在位置:Python中文网/ 问答频道 /正文

print语句的输出输出正确的数据行,但是输出文件只包含3个if语句的最后一行。我试过改变标识,但这似乎只会对代码产生负面影响。你知道吗

import sys
import tokenize

file = []

f = open('Database.txt') # Opening File

for line in f:
file.append(line) # Reading in File

f.close() # Closing File

f = open('output.txt', 'w')

for line in file: # Printing out File
#print line

    tokens = line.split() # splits lines along white-space (tokenise)
    #print tokens
    desired =  '{0:<5}'.format(tokens[0])
    #print desired
    lined = line.split('|') # lhs is original line       

    if 'Not present in Line' in line:
        line1 = desired + ':' + lined[1]
        #print line1

    if 'Not present in TV' in line:
        #print line
        line2 = desired + ' : ' + ' sticking ' + ' Returning ' + '\n'  
        #print line2

    if 'Not present in Line' not in line and 'Not present in TV' not in line:
        #print line
        line3 = desired + ':' + lined[1]
        #print line3

f.write(line1 + line2 + line3)

f.close()

Tags: iniflinenot语句fileprinttokens
1条回答
网友
1楼 · 发布于 2024-09-24 08:31:51

你需要把这行缩进

f.write(line1 + line2 + line3)

与前面的if语句的级别相同。目前,它在for循环之外,因此只有在循环结束后才执行。你知道吗

此外,您可能希望在每行后面添加换行符:

f.write(line1 + line2 + line3 + "\n")

正如Jon Clements正确指出的那样,您需要考虑如果不是所有三个if条件都满足的话应该发生什么-在这种情况下,lineN变量可能未定义,或者仍然可以用上一次迭代的值来定义。事实上,要同时满足这三个条件是不可能的,所以在第一次迭代中总是会遇到NameError。你知道吗

只有您可以决定在for循环开始时将它们设置为默认值是否有意义,或者执行其他操作。你知道吗

相关问题 更多 >