2017-09-10 6 views
1

リストのインデックスが範囲外です。with open(sys.argv[1],'r') as input:
StackOverflowで「スクリプトを実行するときにコマンドライン引数を渡してください」という回答が見つかりました。しかし、まだ動作していません。誰もそれで私を助けることができますか?PyCharmエラー:リストのインデックスが範囲外です。

from collections import Counter 
import sys 

newList = [] 

with open(sys.argv[1],'r') as input: 
    for element in input: 
     temp = str(element).rstrip("\n") 
     temphex = (int(temp,16)) 
     newList.append(temphex) 

veryNew=sorted(newList) 

for n in range(len(veryNew)): 
    veryNew[n] = hex(veryNew[n])[2:] 
    sortedHex = veryNew 

d={} 
for item in veryNew: 
    if item in d: 
     d[item] = d.get(item)+1 
    else: 
     d[item]=1 


for k,v in d.items(): 
    if v > 1: 
     print(str(k)+' '+str(v)) 
+2

問題は、私たちが表示していないスクリプトの実行方法です。 'python myscript.py file.txt'のようなものでなければなりません –

+0

あなたの質問を編集してコードの書式を修正しました。現在表示されているものが、実行しようとしているものと一致していることを確認してください。 – jedwards

答えて

0

は、スクリプトを実行しているどのように私たちを表示:

は、ここに私のコードです。スクリプトに引数を渡していますか?

argv[1]は、スクリプト名の後の最初の引数です。あなたはそれを変更しなかった場合はどのようにpycharmが範囲外であるということです、argv[0]'myscript.py'argv[1]で、argvであなた['myscript.py']を取得し、それを実行しpython myscript.pyようなスクリプトを実行している

たとえばpython myscript.py file.txtのようなスクリプトを実行すると、['myscript.py', 'file.txt']argvリストに表示されます。 PyCharmで

+0

はい、cmdで "python3 myscript.py file.txt"のようなスクリプトを実行しますが、エラーが表示されます。 "[Errno 2]そのようなファイルやディレクトリはありません" – user6428015

+0

まあ、file.txtは現在のディレクトリにありますか?私はあなたが16進数の値の複数の行を持ついくつかのファイルを持っていると仮定します。そのファイルは、作業ディレクトリ(スクリプトを実行するディレクトリ)になければなりません。また、絶対パスまたは相対パスを指定する必要があります。 –

+0

私はcmdで正しい出力を表示しました。しかし、IDEはまだ私にエラーを表示します、それは重要ですか? – user6428015

0

、あなたがsys.argvからパラメータを必要とするとき、あなたはスクリプトがパラメータで、コードを実行this answerの詳細が表示されるはずです。私はsys.argv異なるIDE間でリストが変わると思う。

あなたはこのように実行する場合:使用しよう:

python test.py、あなたが他のsys.argv = ['python', 'test.py']

./test.py filename場合、あなたは、また、私の別のアドバイスをsys.argv = ['./test.py', 'filename']

を取得します取得しますターミナルコードを実行する必要があります。なぜなら、時にはIEDがあなたに知らせずにすべきことを行うからです。

+0

また、 'if __name__ ==" __main __ ":' –

関連する問題