1

私はそのようなものを使用する必要があるプログラムを持っています:

file1=open("cliente\\config.ini","r")

print file1.read().split(",")

user=file1.read().split(",")[0]
passwd=file1.read().split(",")[1]
domain=file1.read().split(",")[2]
file1.close()

このファイルには、「,」で区切られた 3 つの文字列 (ユーザー、パス、ドメイン) があります。

これは出力です:

['user', 'pass', 'domain']
Traceback (most recent call last):
  File "C:\Users\default.default-PC\proyectoseclipse\dnsrat\prueba.py", line 8, in <module>
    passwd=file1.read().split(",")[1]
IndexError: list index out of range

リスト内の 0、1、2 の文字列を取得しているため、存在しない文字列は取得していません。

では、なぜエラーが発生するのでしょうか??

どうもありがとうございました。

4

4 に答える 4

3

ファイルの終わりを過ぎて読んでいます。引数なしで呼び出すreadと、ファイル全体の内容が読み取られ、ポインターがファイルの末尾に進みます。必要なのは、read一度、内容を変数に保存することです。次に、そこからインデックスにアクセスします。

file1 = open("cliente\\config.ini","r")

line1 = file1.read().split(",")

user = line1[0]
passwd = line1[1]
domain = line1[2]
file1.close()
于 2013-03-30T02:23:48.123 に答える
1

read()ファイルの内容を返します。ドキュメントから:

...which reads some quantity of data and returns it as a string.

もう一度呼び出すと、読み取るものが残っていません。

于 2013-03-30T02:25:13.013 に答える
0

read() は、読み込みバッファからデータを取得するメソッドです。また、バッファからデータを複数回取得することはできません。

于 2013-03-30T02:26:27.347 に答える
0
file1=open("cliente\\config.ini","r")

data = file1.read().split(",")

user=data[0]
passwd=data[1]
domain=data[2]
file1.close()

最初の file.read() 行は、行を読み取った後、カーソルをファイルの最後に移動します。他の file.read() は、期待どおりにファイルを再度読み取りません。代わりに、カーソルの最後から読み取り、空の文字列を返します。

于 2013-03-30T02:28:49.393 に答える