Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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_Loops_Input_While Loop - Fatal编程技术网

Python 当循环不断崩溃时

Python 当循环不断崩溃时,python,loops,input,while-loop,Python,Loops,Input,While Loop,我是Python新手,在大学学习网络安全时,我只做了一点工作。我正试着写一个工作(个人使用)的小脚本。代码不会循环并且不断崩溃,有人能帮忙吗 """ Created on Fri Apr 16 10:28:50 2021 @author: lukem """ import datetime from datetime import * import sys print("Commercial Divers Work Ho

我是Python新手,在大学学习网络安全时,我只做了一点工作。我正试着写一个工作(个人使用)的小脚本。代码不会循环并且不断崩溃,有人能帮忙吗

"""
Created on Fri Apr 16 10:28:50 2021

@author: lukem
"""

import datetime
from datetime import *
import sys

print("Commercial Divers Work Hours")
while True:
    while True:
        
                DT1 = input("Is it todays date?:").lower()
                
            
                if DT1 == 'n' or DT1 == 'N':
                   DT2 = input("Enter Date?")
                
                elif DT1 == 'Y' or DT1 == 'y':
                      print(datetime.now())
                      
               
                
                   
                shrs = int(input("Start Time?:"))
                fhrs = int(input("Finish time?:"))
                thrs = int(input("Travel time?:"))
                job = input("At what Job?:")
                dp = input("Depth pay? How many meters?:")
                wd = input("Welding allowance? y/n:")
                    
                    
                if wd == 'y':
                
                    wd1 =  int(input("How Many Millimeters?:"))
                 
                    
                elif wd == 'n':
                    print("0")
                    break 
                                     
    
                 
                if DT1 == 'Y' or  DT1 == 'y':
                 
                   print("Date: ",datetime.now())
                   print("Start Time: ",shrs)
                   print("Finish Time: ",fhrs)
                   print("Travel Time: ",thrs)
                   print("Job or Client: ",job)
                   print("Depth Allowance in meters: ",dp)
                   print("Welding allowance in mm: ", wd1)
                   
                elif DT1 == 'n' or DT1 == 'N':
                    
                   print("Date: ",DT2)
                   print("Start Time: ",shrs)
                   print("Finish Time: ",fhrs)
                   print("Travel Time: ",thrs)
                   print("Job or Client: ",job)
                   print("Depth Allowance in meters: ",dp)
                   print("Welding allowance in mm: ", wd1)
                        
                        
                   
                    
                   
                file = open('Workhours7y.txt' , 'a')
                sys.stdout = file 
                      
                if DT1 == 'Y' or  DT1 == 'y':
                     
                       print("Date: ",datetime.now())
                       print("Start Time: ",shrs)
                       print("Finish Time: ",fhrs)
                       print("Travel Time: ",thrs)
                       print("Job or Client: ",job)
                       print("Depth Allowance in meters: ",dp)
                       print("Welding allowance in mm: ", wd1)
                       
                elif DT1 == 'n' or DT1 == 'N':
                        
                       print("Date: ",DT2)
                       print("Start Time: ",shrs)
                       print("Finish Time: ",fhrs)
                       print("Travel Time: ",thrs)
                       print("Job or Client: ",job)
                       print("Depth Allowance in meters: ",dp)
                       print("Welding allowance in mm: ", wd1)
                
                file.close()
                
                Continue
            
不要使用sys.stdout=file。 在结束时关闭文件,当循环从头开始时,仍然尝试打印到关闭的文件,这不起作用,因为它已关闭


使用单独的命令写入文件。

出现此错误是因为您正在使
sys.stdout
指向
文件
,然后关闭
文件
。问题是,
print
写入
sys.stdout
指向的任何文件,但您已经关闭了该文件

去掉
sys.stdout=file
行,改为更改
print
s以使用
file
参数:

print("Date: ",DT2, file=file)
或者,直接写入文件:

file.write(f"Date: {DT2}\n") 

带堆栈跟踪的完整错误是什么?[SpyderKernelApp]错误|消息处理程序中的异常:ValueError:I/O操作关闭的文件。Spyder中大约有100行行话,但这是第一行和最后一行。顺便说一句,您可以检查
DT1.lower()=='n'
这样您就不必写入比较您正在关闭替换的
标准输出,然后尝试写入它。为什么要执行sys.stdout=file
?为什么不正常写入文件,或者使用
打印
文件
参数?