注:私はすでにstackoverflow上のすべてのソリューションを試してみました!コマンドライン引数は取得されません
私はWindows 10とPython 3.5を使用しています。私はこのエラーを取得しています:
Traceback (most recent call last):
File "geiger_plot.py", line 236, in <module>
main()
TypeError: main() missing 1 required positional argument: 'argv'
私はありとあらゆるコマンドを使用してスクリプトを実行しようとすると:
geiger_plot.py test
python geiger_plot.py test
"C:\Program Files\Python35\python.exe" geiger_plot.py test
"C:\Program Files\Python35\python.exe" C:\Users\Chaosuser\Desktop\GeigerLog\geiger_plot.py test test test
私はすでにPythonのコマンドライン引数のレジストリエントリを修正:
[HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command]
@="\"C:\\Program Files\\Python35\\python.exe\" \"%1\" %*"
[HKEY_CLASSES_ROOT\Applications\pythonw.exe\shell\open\command]
@="\"C:\\Program Files\\Python35\\pythonw.exe\" \"%1\" %*"
(これは輸出された.regです。そのため、何千ものバックスラッシュがあります) スクリプト自体には、私が知っている限りすべてのものを作成しました。これは、別のスクリプトから引数を使ってファイルパス(logfile
)を渡して実行したいスクリプトです。それは常に私にエラーを与えたので、シェルから直接実行しようとしました。
import sys
def main(argv):
sys.argv
print(sys.argv)
logfile = str(sys.argv[1])
それだけでも私にsys.argv
の私の使用に関するエラーを与えるためにそこに取得していません!
どうしたのですか?
def main(argv):
print(sys.argv)
to
def main():
print(sys.argv)
男... Pythonは再びそのハードそう簡単に構成されています
SOLUTIONはARGVを削除することでした!
Pythonは( 'mainという関数を実行しません)'自動的。スクリプトの終わりに 'main(sys.argv)'ステートメントであなた自身を呼び出します。もしあなたのスクリプトが別のもの(おそらく 'main()'の実行を望まない場合)でスクリプトをインポートすることができるなら、 'if __name__ == '__main __':'で条件付きにしたいかもしれません。 – martineau
'HKEY_CLASSES_ROOT'に書き込まないでください。そのキーは、* reading *のための統合されたビューです。それへの書き込みの結果は不確定です。更新したいと思う正確なハイブに特化してください: '[HKLM | HKCU] \ SOFTWARE \ Classes'にあります。また、現在のユーザが 'Applications \ python.exe'サブキーを使用するように実際に設定されている場合は、Pythonのインストールを修正(壊れてしまった)しています。 Python.FileとPython.NoConFileを使用する必要があります。これはpy [w] .exeランチャーを使用する必要があります。ユーザーの選択は、(HKCU¥SOFTWARE¥Microsoft¥Windows¥CurrentVersion¥Explorer¥FileExts¥.py¥UserChoice')(読み取り専用)です。 – eryksun
eryksun私はこれを手動で行い、regeditのエクスポート機能を使って他の人と分かち合うための鍵を手に入れました。これはどうですか?[HKLM | HKCU]特定ですか?私はpython.fileとpython.noconfileを見て、彼らは最初から大丈夫でした。 Theres no py.exeとpyw.exe、私の場合はpython.exe – Distelzombie