Python 打印语句正常时将输出写入文件时出现问题
“我的打印”语句的输出输出正确的数据行,但输出文件仅包含3条if语句的最后一行。我尝试过改变标识,但这似乎只会对代码产生负面影响Python 打印语句正常时将输出写入文件时出现问题,python,output,indentation,Python,Output,Indentation,“我的打印”语句的输出输出正确的数据行,但输出文件仅包含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')
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()
导入系统
导入标记化
文件=[]
f=打开('Database.txt')#打开文件
对于f中的行:
文件。追加(行)#在文件中读取
f、 close()#关闭文件
f=打开('output.txt','w')
对于文件中的行:#打印文件
#打印行
tokens=line.split()#沿空白分割行(tokenise)
#打印代币
desired='{0:您需要缩进该行
f.write(line1 + line2 + line3)
与前面的if
语句的级别相同。当前,它在for
循环之外,因此仅在该循环结束后执行
此外,您可能希望在每行后面添加换行符:
f.write(line1 + line2 + line3 + "\n")
正如Jon Clements正确指出的,如果不满足所有三个条件,您需要考虑应该发生什么-在这种情况下,lineN
变量可能未定义,或者仍然使用上一次迭代的值定义。事实上,不可能同时满足所有三个条件,因此“在第一次迭代过程中,您总是会遇到namererror
只有您可以决定在循环开始时将它们设置为默认值或执行其他操作是否合理。您需要缩进行
f.write(line1 + line2 + line3)
与前面的if
语句的级别相同。当前,它在for
循环之外,因此仅在该循环结束后执行
此外,您可能希望在每行后面添加换行符:
f.write(line1 + line2 + line3 + "\n")
正如Jon Clements正确指出的,如果不满足所有三个条件,您需要考虑应该发生什么-在这种情况下,lineN
变量可能未定义,或者仍然使用上一次迭代的值定义。事实上,不可能同时满足所有三个条件,因此“在第一次迭代过程中,您总是会遇到namererror
只有您可以决定在循环开始时将它们设置为默认值或执行其他操作是否合理。您需要缩进行
f.write(line1 + line2 + line3)
与前面的if
语句的级别相同。当前,它在for
循环之外,因此仅在该循环结束后执行
此外,您可能希望在每行后面添加换行符:
f.write(line1 + line2 + line3 + "\n")
正如Jon Clements正确指出的,如果不满足所有三个条件,您需要考虑应该发生什么-在这种情况下,lineN
变量可能未定义,或者仍然使用上一次迭代的值定义。事实上,不可能同时满足所有三个条件,因此“在第一次迭代过程中,您总是会遇到namererror
只有您可以决定在循环开始时将它们设置为默认值或执行其他操作是否合理。您需要缩进行
f.write(line1 + line2 + line3)
与前面的if
语句的级别相同。当前,它在for
循环之外,因此仅在该循环结束后执行
此外,您可能希望在每行后面添加换行符:
f.write(line1 + line2 + line3 + "\n")
正如Jon Clements正确指出的,如果不满足所有三个条件,您需要考虑应该发生什么-在这种情况下,lineN
变量可能未定义,或者仍然使用上一次迭代的值定义。事实上,不可能同时满足所有三个条件,因此“在第一次迭代过程中,您总是会遇到namererror
只有您可以决定在循环开始时将它们设置为默认值或执行其他操作是否有意义。可能还值得一提的是,line1
、line2
和line3
在某些点将不被定义,从而导致namererror
,或者可能具有以下值:m前面的几行可能不可取。是的,当我缩进到if语句时,第1行变成了NameError。我如何解决这个问题?Thanks@AmyRose:嗯,一种可能是(正如我在最后一段中所建议的)将所有三个设置为默认值,例如line1=line2=line3=“”
在for
循环的开始处。可能还值得一提的是,第1行
、第2行
和第3行
在某些点上没有定义,从而导致名称错误
,或者可能具有前几行中可能不需要的值。是的,当我缩进到if语句时,line1变成了NameError。我该如何解决这个问题?Thanks@AmyRose:嗯,一种可能是(正如我在最后一段中所建议的)将所有三个设置为默认值,例如line1=line2=line3=“”
在for
循环的开始处。可能还值得一提的是,第1行
、第2行
和第3行
在某些点上没有定义,从而导致名称错误
,或者可能具有前几行中可能不需要的值。是的,当我缩进到if语句时,line1变成了NameError。我该如何解决这个问题?Thanks@AmyRose:嗯,一种可能是(正如我在最后一段中所建议的)将所有三个设置为默认值,例如line1=line2=line3=“”
在for
循环的开始处。还值得一提的是,第1行
、第2行
和第3行
将在某些点未定义,从而导致名称错误
,或者可能具有以前行的值,这些值可能是