Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 打印语句正常时将输出写入文件时出现问题_Python_Output_Indentation - Fatal编程技术网

Python 打印语句正常时将输出写入文件时出现问题

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')

“我的打印”语句的输出输出正确的数据行,但输出文件仅包含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()
导入系统 导入标记化 文件=[] 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行
将在某些点未定义,从而导致
名称错误
,或者可能具有以前行的值,这些值可能是