0

我想更新 wpa_supplicant.conf 文件中的记录,其中保存了其中一个连接的密码。无论整个记录是仅位于一行中还是以不同的方式格式化,它都应该可以工作。因此,如果“网络”是我的网络的名称,基本上我想做的就是采取

network={ ssid="network" psk="password" }

并替代

network" (...whatever...) }

network" psk="new_password"}

我知道正则表达式是其中的关键,但由于我完全不熟悉它,所以我可以用手。

提前致谢

4

1 回答 1

0

您可以简单地使用没有正则表达式的解决方案。特别是对于编程新手来说,正则表达式可能真的很糟糕。

没有正则表达式的可能解决方案是:

def set_new_password(password):
    with open('/etc/wpa_supplicant/wpa_supplicant.conf','r') as f:
            in_file = f.readlines()
            f.close()

    out_file = []
    for line in in_file:
            if line.startswith("psk"):
                    line = 'psk='+'"'+password+'"'+'\n'
            out_file.append(line)

    with open('/etc/wpa_supplicant/wpa_supplicant.conf','w') as f:
            for line in out_file:
                    f.write(line)

这是另一个带有正则表达式的解决方案。这不是一个非常优雅的正则表达式,但也许通过这样一个简单的例子你可以理解它的含义:

def set_new_password(password):
    with open('/etc/wpa_supplicant/wpa_supplicant.conf','r') as f:
            in_file = f.read()
            f.close()

    out_file =  re.sub(r'psk=".*"','psk='+'"'+password+'"',in_file)

    with open('/etc/wpa_supplicant/wpa_supplicant.conf','w') as f:
            f.write(out_file)
            f.close()

你应该看看Regex101。在那里你可以很容易地检查你对正则表达式的想法。

于 2017-02-28T17:47:37.250 回答