当循环不断崩溃时

2024-09-30 16:19:56 发布

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

我是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
            

Tags: orininputdatetimedatetimejobstart
2条回答

不要使用sys.stdout=file。 在结束时关闭文件,当循环从头开始时,仍然尝试打印到关闭的文件,这不起作用,因为它已关闭

使用单独的命令写入文件

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

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

print("Date: ",DT2, file=file)

或者,直接写入文件:

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

相关问题 更多 >