本问题已经有最佳答案,请猛点这里访问。
我试了一试:接住,但不管用。我想我可以把它改成if语句,但是不明白为什么这个不行。这是我第一个"真正"的项目。我正在构建一个灌溉控制器,并创建一个灌溉时间表字典。第一个代码是我目前拥有的代码,第二个代码是我正在尝试的"测试"本身。每当我运行代码时,它都会重写现有文件,而我想让它打开文件(如果文件已经存在),然后不再重写它。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | # timer will first look for a saved file(dictionary) of already recorded # irrigation times. If no file exists it will create one. # irrigation timer which does scheduled irrigation as well as cyclic irrigation for propagating plants. # uses a lcd 1602 display # will use up to 10 different valves import time import datetime import threading import RPi.GPIO as GPIO from RPLCD import CharLCD # http://www.circuitbasics.com/raspberry-pi-lcd-set-up-and-programming-in-python/ GPIO.setmode(GPIO.BOARD) # pinouts for lcd pins lcd = CharLCD (cols=16, rows=2, pin_rs=37, pin_e=35, pins_data=[33, 31, 29, 23]) # valve pins valve_1 = 8 valve_2 = 10 valve_3 = 12 valve_4 = 16 valve_5 = 18 valve_6 = 22 valve_7 = 24 valve_8 = 26 valve_9 = 32 valve_10 = 36 # setup valve pins as outputs GPIO.setup(valve_pin1, GPIO.OUT) GPIO.setup(valve_pin2, GPIO.OUT) GPIO.setup(valve_pin3, GPIO.OUT) GPIO.setup(valve_pin4, GPIO.OUT) GPIO.setup(valve_pin5, GPIO.OUT) GPIO.setup(valve_pin6, GPIO.OUT) GPIO.setup(valve_pin7, GPIO.OUT) GPIO.setup(valve_pin8, GPIO.OUT) GPIO.setup(valve_pin9, GPIO.OUT) GPIO.setup(valve_pin10, GPIO.OUT) #set all valve pins to off GPIO.output(valve_pin1, False) GPIO.output(valve_pin2, False) GPIO.output(valve_pin3, False) GPIO.output(valve_pin4, False) GPIO.output(valve_pin5, False) GPIO.output(valve_pin6, False) GPIO.output(valve_pin7, False) GPIO.output(valve_pin8, False) GPIO.output(valve_pin9, False) GPIO.output(valve_pin10, False) # check to see if a schedule has been saved def sched_check() try: file = open("schedule.dat","r") schedule = schedule.read() file.close() # create a list of schedule dictionaries except: schedule_list = [] for schedule_number in range(10): schedule = { "timed" : { "watering_days" : [], "watering_times" : [], "duration" :"timed_duration", }, "cyclic" : { "time_on" :"seconds_on", "time_off" :"seconds_off", "blackout_window_start" :"blkout_time_start", "blackout_window_stop" :"blkout_time_stop", }, } schedule_list.append(schedule) file = open("schedule.dat","w") file.write(str(schedule_list)) file.close() |
这就是问题所在。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | def sched_check(): try: file = open("schedule.dat","r") schedule = schedule.read() file.close() print("file already exists") # create a list of schedule dictionaries except: schedule_list = [] for schedule_number in range(10): schedule = { "timed" : { "watering_days" : [], "watering_times" : [], "duration" :"timed_duration", }, "cyclic" : { "time_on" :"seconds_on", "time_off" :"seconds_off", "blackout_window_start" :"blkout_time_start", "blackout_window_stop" :"blkout_time_stop", }, } schedule_list.append(schedule) file = open("schedule.dat","w") file.write(str(schedule_list)) file.close() print("new file created") sched_check() |
您可以使用
使用
1 2 3 4 5 6 7 | import os try: os.stat("schedule.dat") ... # file exists except: file = open("schedule.dat","w") ... |
一个异常是您尝试