Python 当循环不断崩溃时
我是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
"""
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
?为什么不正常写入文件,或者使用打印
的文件
参数?