1

我想编辑此路径中的“主机”文件:C:\Windows\System32\Drivers\etc。我正在使用 Windows 8。

我的代码是这样的:

f1 = open('C:\\WINDOWS\\system32\\drivers\\etc\\hosts', 'r')
f2 = open('C:\\WINDOWS\\system32\\drivers\\etc\\hosts', 'w')
usrinput1 = str(input('Enter A name:'))
for line in f1:
   f2.write(line.replace('localhost', usrinput1))
f1.close()
f2.close()

我没有足够的权限来编辑这个文件。我以管理员用户身份登录。为什么我的代码不正确?

4

1 回答 1

0

1)我在编辑中对您粘贴的代码进行了一些修复。我个人不喜欢同时读/写同一个文件(尤其是在 Windows 下),所以这里有一个建议的替代版本。我也忘记了 raw_input 与 input 如此使用如何在 Python 3的建议中使用 raw_input

try: input = raw_input
except NameError: pass

f1 = open('C:\\WINDOWS\\system32\\drivers\\etc\\hosts', 'r')
data = f1.read()
f1.close()
f2 = open('C:\\WINDOWS\\system32\\drivers\\etc\\hosts', 'w')
usrinput1 = str(input('Enter A name in quotes:'))
for line in data.split("\n"):
  if line.find("localhost") != -1:
    f2.write(line + " " + usrinput1 + "\n")
  else:
    f2.write(line + "\n")
f2.close()

2) 请注意,以具有管理员权限的用户身份登录是不够的。您需要执行 runas adminstrator cmd(开始菜单 -> 所有程序 -> 附件 -> 右键单击​​命令提示符),然后从那里运行 python 以使您的 python 程序具有正确的权限。(或者您可以按照其中一条关于获得正确权限的替代方法的评论中的建议进行操作)

3)不确定您是否打算这样做,但您最好将新主机名添加到 localhost 条目而不是替换 localhost(这样,如果您多次运行该程序,它将在后续运行中起作用)

于 2013-09-09T13:57:29.547 回答