**編集:
不明な場合は申し訳ありません。明確にしましょう:ファイル名と数値iを引数として取り、numpy.loadtxt()でファイル名で指定されたファイルをロードし、列番号iを返す関数を作成しようとしています(ファイルは配列を印刷します)。
基本的に私がやりたいことは:
def loadfile(filename.py, i):
f = numpy.loadtxt('filename.py', usecols=(i))
return(f)
しかし、それでも最初の行を通過させることはできません、私はエラーを取得します:
def loadfile(filename.py, i)
^
Syntax Error: Invalid Syntax
だから私は助けが必要なのは、そのエラーメッセージを取得せずに、何らかの形で引数として受け入れられるファイル名を作ることです。
私も試しました
def loadfile(x, i):
f = numpy.loadtxt('x', i)
return(f)
そして、それは関数として受け入れられていますが、実際にファイル名でそれを呼び出そうとすると、このエラーが発生します:
loadfile(sampledata.py, 2)
NameError: name 'sampledata' is not defined.
結論:ファイル名を引数として使用するにはどうすればよいですか?
***正確なエラーメッセージ 結果のTypeErrorメッセージ
試してください:
import numpy
def loadfile(filename, i):
return numpy.loadtxt(filename, usecols=(i,))
例として、次のファイルを検討してください。
$ cat nums.txt
1 2 3
4 5 6
7 8 9
次に、列でloadfile
が正常に読み取られることを確認します。
>>> loadfile('nums.txt', 2)
array([ 3., 6., 9.])
関数定義のdef
行は、:
で終わる必要があります。
関数の引数は、'filename.py'
などの固定文字列ではなく、filename
などの変数である必要があります。
これは実行されますが、あなたが望むことはしません:
def loadfile(x, i):
f = numpy.loadtxt('x', i)
return(f)
上記はx
を引数として取りますが、それを無視し、名前が単一文字x
であるファイル名をロードしようとします。
これも機能しません:
def loadfile(filename.py, i):
f = numpy.loadtxt('filename.py', usecols=(i))
return(f)
filename.py
は単純変数の有効な名前ではありません。たとえそうであっても、コードはその変数名を使用しようとしません。代わりに、名前が文字列filename.py
であるファイルをロードしようとします。