Python 关于改进代码的建议
昨天我发现我不能在家里的某些地方使用无线网络。我用另一个调制解调器作为WiFi扩展器,我设法覆盖了这些地点 问题是,当我进入这些死点时,我需要使用静态IP并更改我的主dns服务器,否则我会得到有限的连接。另外,当我不在这些位置时,我仍然希望使用DHCP 我已经编写了两个批处理文件和一个python脚本来定义无线适配器设置 我想有人来看看,并建议如何改善它 批处理文件(我使用快捷方式是因为可以选择以管理员身份运行它们)Python 关于改进代码的建议,python,batch-file,Python,Batch File,昨天我发现我不能在家里的某些地方使用无线网络。我用另一个调制解调器作为WiFi扩展器,我设法覆盖了这些地点 问题是,当我进入这些死点时,我需要使用静态IP并更改我的主dns服务器,否则我会得到有限的连接。另外,当我不在这些位置时,我仍然希望使用DHCP 我已经编写了两个批处理文件和一个python脚本来定义无线适配器设置 我想有人来看看,并建议如何改善它 批处理文件(我使用快捷方式是因为可以选择以管理员身份运行它们) 死点 netsh interface ip set address "Wi-F
netsh interface ip set address "Wi-Fi" static 192.168.x.x 255.255.255.0 192.168.x.x
netsh interface ip set dns "Wi-Fi" static 192.168.x.x primary # This is the second modem
netsh interface ip add dns "Wi-Fi" ISP.dns.IP index=2
netsh interface ip set address "Wi-Fi" dhcp
netsh interface ip set dnsservers "Wi-Fi" source=dhcp
import subprocess as sub
def WiFi():
filepath1 = Path_To_DeadSpots.bat.ink
filepath2 = Path_To_Regular.bat.ink
loc = input("Please choose your location: 1-Rooms, 2-Rest \n")
while(loc != "1" and loc != "2"):
print("Wrong input, please choose again")
loc = input("Please choose your location: 1-Rooms, 2-Rest \n")
if loc == "1":
p = sub.Popen(filepath1,shell=True,stdout=sub.PIPE)
else:
p = sub.Popen(filepath2,shell=True,stdout=sub.PIPE)
WiFi()
请提出改进建议,谢谢。不知道您的其他程序结构 您可以使用
argparse
来增加它的趣味性
然后你可以打电话:
python wifi.py——到死点的路径。/deadspots.bat.ink——到常客的路径。/regulars.bat.ink——房间位置2
例如:
import argparse
import subprocess as sub
class IsAccesible(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
if os.path.isfile(values):
if os.access(values, os.R_OK):
setattr(namespace, self.dest, values)
else:
raise ValueError("Path is not accesible")
class IsValidRoomLoc(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
if values == 1 or values == 2:
setattr(namespace, self.dest, values)
else:
raise ValueError("Room loc is not valid")
def WiFi():
parser = argparse.ArgumentParser()
parser.add_argument('--path-to-deadspots', dest='path_to_deadspots', help="The deadspots file location", type=str, required=True, action=IsAccesible, default="./deadspots.bat.ink")
parser.add_argument('--path-to-regular', dest='path_to_regular', help="The regular file location", type=str, required=True, action=IsAccesible, default="./regular.bat.ink")
parser.add_argument('--room-loc', dest='room_loc', help="The room lock, \'1\' or \'2\'", type=int, required=True, action=IsValidRoomLoc, default=1)
args = parser.parse_args()
path_to_deadspots = args.path_to_deadspots
path_to_regular = args.path_to_regular
room_loc = args.room_loc
if room_loc == "1":
p = sub.Popen(path_to_deadspots,shell=True,stdout=sub.PIPE)
else if room_loc == "2":
p = sub.Popen(path_to_regular,shell=True,stdout=sub.PIPE)
WiFi()
您还可以删除第一个参数,只需执行以下操作:
python wifi.py./deadspots.bat.ink./regulars.bat.ink 2
如果您的代码工作正常,并且实现了您希望它做的事情,您可以将其带到获取改进方法的建议。但只有在它起作用的情况下——如果他们发现自己也必须调试代码,他们往往会非常恼火(这更像是我们在这里的工作。)@DSM,谢谢,我会问的。wOxxOm,谢谢你编辑我的帖子。@DSM实际上,为了澄清,我们没有生气。破译的代码完全脱离主题。这并不意味着一个晦涩难懂的bug会使问题偏离主题。但是如果它显然被破坏了(不做它应该做的,即使在最好的情况下也不能编译,有语法错误…如果你运行自己的代码,你可以捕捉到的东西)就被关闭了。伙计们停下来,这是人们提问和学习编程的地方。。。如果他要求改进,给他改进@杰弗里海因斯:这是一个过于宽泛的问题,而不是我们的运作方式。按照“提问并学习编程”的标准,我们几乎永远不会关闭任何东西(不客气:-)在过去的几周里,我们刚刚学会了如何做到这一点!如果值为1或值为2,请尝试python wifi.py--help:):为测试身份。你想测试平等性。这只适用于CPython的实现细节。有关更详细的说明,请参阅。