我有一个带有 8 个复选框的 UI。这个想法是,根据检查的内容,它将选择要发送到 telnet 的命令以及要返回的数据文件。
目前我只有 8 个 IF 语句。这导致某些文件在写入时混淆。我认为解决这个问题的方法是更长的 if 语句,其中包含所有可能的组合,但这是很多组合。有没有一种简单的方法可以使这些语句不会相互覆盖?
这是一些代码:
if self.EHbox.isChecked():
tn.write("geh,".encode('ascii') + TS2Dur.encode() + b"\n\r")
out_file = open(self.linePATH.text() + date + "_001.csv", "wt")
out_file.write(tn.read_until(b"EOF").replace(b'\r\n',b'\n').replace(b'ACK',b'').replace(b'EOF',b'').strip().decode())
out_file.close()
if self.AHbox.isChecked():
tn.write("DAT,".encode('ascii') + TS2Dur.encode() + b"\n\r")
out_file = open(self.linePATH.text() + date + "_001.csv", "wt")
out_file.write(tn.read_until(b"EOF").replace(b'\r\n',b'\n').replace(b'ACK',b'').replace(b'EOF',b'').strip().decode())
out_file.close()
if self.DHbox.isChecked():
tn.write("GDH,".encode('ascii') + TS2Dur.encode() + b"\n\r")
out_file = open(self.linePATH.text() + date + "_001.csv", "wt")
out_file.write(tn.read_until(b"EOF").replace(b'\r\n',b'\n').replace(b'ACK',b'').replace(b'EOF',b'').strip().decode())
out_file.close()
if self.L1box.isChecked():
tn.write("gl1,".encode('ascii') + TS2Dur.encode() + b"\n\r")
out_file = open(self.linePATH.text() + date + "_001.csv", "wt")
out_file.write(tn.read_until(b"EOF").replace(b'\r\n',b'\n').replace(b'ACK',b'').replace(b'EOF',b'').strip().decode())
out_file.close()
if self.L2box.isChecked():
tn.write("gl2,".encode('ascii') + TS2Dur.encode() + b"\n\r")
out_file = open(self.linePATH.text() + date + "_001.csv", "wt")
out_file.write(tn.read_until(b"EOF").replace(b'\r\n',b'\n').replace(b'ACK',b'').replace(b'EOF',b'').strip().decode())
out_file.close()
if self.CMbox.isChecked():
tn.write("gsf,0".encode('ascii') + b"\n\r")
out_file = open(self.linePATH.text(), "wt")
out_file.write(tn.read_until(b"EOF").replace(b'\r\n',b'\n').replace(b'ACK',b'').replace(b'EOF',b'').strip().decode())
out_file.close()
if self.CNbox.isChecked():
tn.write("gsf,1".encode('ascii') + b"\n\r")
out_file = open(self.linePATH.text(), "wt")
out_file.write(tn.read_until(b"EOF").replace(b'\r\n',b'\n').replace(b'ACK',b'').replace(b'EOF',b'').strip().decode())
out_file.close()
if self.FLbox.isChecked():
tn.write("gsf,2".encode('ascii') + b"\n\r")
out_file = open(self.linePATH.text(), "wt")
out_file.write(tn.read_until(b"EOF").replace(b'\r\n',b'\n').replace(b'ACK',b'').replace(b'EOF',b'').strip().decode())
out_file.close()