Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 关于改进代码的建议_Python_Batch File - Fatal编程技术网

Python 关于改进代码的建议

Python 关于改进代码的建议,python,batch-file,Python,Batch File,昨天我发现我不能在家里的某些地方使用无线网络。我用另一个调制解调器作为WiFi扩展器,我设法覆盖了这些地点 问题是,当我进入这些死点时,我需要使用静态IP并更改我的主dns服务器,否则我会得到有限的连接。另外,当我不在这些位置时,我仍然希望使用DHCP 我已经编写了两个批处理文件和一个python脚本来定义无线适配器设置 我想有人来看看,并建议如何改善它 批处理文件(我使用快捷方式是因为可以选择以管理员身份运行它们) 死点 netsh interface ip set address "Wi-F

昨天我发现我不能在家里的某些地方使用无线网络。我用另一个调制解调器作为WiFi扩展器,我设法覆盖了这些地点

问题是,当我进入这些死点时,我需要使用静态IP并更改我的主dns服务器,否则我会得到有限的连接。另外,当我不在这些位置时,我仍然希望使用DHCP

我已经编写了两个批处理文件和一个python脚本来定义无线适配器设置

我想有人来看看,并建议如何改善它

批处理文件(我使用快捷方式是因为可以选择以管理员身份运行它们)

  • 死点

    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
    
  • Python代码

    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的实现细节。有关更详细的说明,请参阅。