1

C:\Windows\System32\Drivers\etcこのパスの「hosts」ファイルを編集したい: 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()

このファイルを編集するための十分な権限がありません。admin ユーザーでログインしました。コードが正しくないのはなぜですか?

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 プログラムに適切な権限を持たせる必要があります。(または、適切な権限を取得する別の方法に関するコメントの 1 つの提案に従うこともできます)

3) これを行うつもりだったかどうかはわかりませんが、localhost を置き換えるよりも、新しいホスト名を localhost エントリに追加した方がよいでしょう (そのため、プログラムを複数回実行しても、その後の実行で機能します)。

于 2013-09-09T13:57:29.547 に答える