Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.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
Javascript 从python编辑.js文件_Javascript_Python_Firefox - Fatal编程技术网

Javascript 从python编辑.js文件

Javascript 从python编辑.js文件,javascript,python,firefox,Javascript,Python,Firefox,我正在编写一个程序,其中包括编辑Firefox的代理设置,特别是socks和http代理设置。我想通过编辑Firefox的prefs.js文件来实现这一点。它在python中打开得很好——但在那之后,我想不出一种方法来实现这一点,它不是难以置信的长和迂回。我要编辑的prefs.js部分如下所示: user_pref("network.proxy.backup.ftp", ""); user_pref("network.proxy.backup.ftp_port", 0); user_pref("

我正在编写一个程序,其中包括编辑Firefox的代理设置,特别是socks和http代理设置。我想通过编辑Firefox的prefs.js文件来实现这一点。它在python中打开得很好——但在那之后,我想不出一种方法来实现这一点,它不是难以置信的长和迂回。我要编辑的prefs.js部分如下所示:

user_pref("network.proxy.backup.ftp", "");
user_pref("network.proxy.backup.ftp_port", 0);
user_pref("network.proxy.backup.socks", "");
user_pref("network.proxy.backup.socks_port", 0);
user_pref("network.proxy.backup.ssl", "");
user_pref("network.proxy.backup.ssl_port", 0);
user_pref("network.proxy.ftp", "foo.bar");
user_pref("network.proxy.ftp_port", 5);
user_pref("network.proxy.gopher", "");
user_pref("network.proxy.gopher_port", 0);
user_pref("network.proxy.http", "foo.bar");
user_pref("network.proxy.http_port", 5);
user_pref("network.proxy.share_proxy_settings", true);
user_pref("network.proxy.socks", "foo.bar");
user_pref("network.proxy.socks_port", 5);
user_pref("network.proxy.ssl", "foo.bar");
user_pref("network.proxy.ssl_port", 5);
user_pref("network.proxy.type", 1);

在这里,您并不需要JavaScript解析器或任何花哨的东西;您可以使用非常简单的正则表达式来实现这一点。例如:

r = re.compile(r'user_pref\("network.proxy.socks", .*?\);')
with open('prefs.js') as f:
    contents = f.read()
contents = r.sub(r'user_pref("network.proxy.socks", "the.value.i.want");', 
                 contents)
with open('newprefs.js', 'w') as f:
    f.write(contents)
with open('prefs.js') as fin, open('newprefs.js', 'w') as fout:
    for line in fin:
        if 'user_pref("network.proxy.socks",' in line:
            line = 'user_pref("network.proxy.socks", "the.value.i.want");\n'
        fout.write(line)
如果你连简单的正则表达式都不懂,那么简单的字符串操作也不难做到。例如:

r = re.compile(r'user_pref\("network.proxy.socks", .*?\);')
with open('prefs.js') as f:
    contents = f.read()
contents = r.sub(r'user_pref("network.proxy.socks", "the.value.i.want");', 
                 contents)
with open('newprefs.js', 'w') as f:
    f.write(contents)
with open('prefs.js') as fin, open('newprefs.js', 'w') as fout:
    for line in fin:
        if 'user_pref("network.proxy.socks",' in line:
            line = 'user_pref("network.proxy.socks", "the.value.i.want");\n'
        fout.write(line)

要编辑更多行,只需多次执行相同的操作。

您到底要编辑什么?具体来说,我要更改socks和http代理设置。我将把它添加到问题中。为什么这个标签是Java?javascript=/=Java,我的错。抢手货