I have a Python app that I\'m working on that needs to access the hosts file to append a few lines. Everything worked on my test file, but when I told the program to actuall
The easiest way to handle this is to write out your changes to a temp file, then run a program to overwrite the protected file. Like so:
with open('/etc/hosts', 'rt') as f:
s = f.read() + '\n' + '127.0.0.1\t\t\thome_sweet_home\n'
with open('/tmp/etc_hosts.tmp', 'wt') as outf:
outf.write(s)
os.system('sudo mv /tmp/etc_hosts.tmp /etc/hosts')
When your Python program runs sudo, the sudo program will prompt the user for his/her password. If you want this to be GUI based you can run a GUI sudo, such as "gksu".
On Windows, the hosts file is buried a couple subdirectories under \Windows. You can use the same general trick, but Windows doesn't have the sudo command. Here is a discussion of equivalents:
https://superuser.com/questions/42537/is-there-any-sudo-command-for-windows