0

テキスト ファイルのセクションを新しい一時ファイルにコピーする次のコードがあります。コピー中のファイルと同じディレクトリに一時ファイルを作成しようとしています。すべての印刷ステートメントは、クラッシュする前にどれだけ実行されるかを確認するためのもので1あり、pdb が印刷され、コードの下にスクリーン キャプチャされたエラーが表示されます。

def copymp(mptfile):
    print 1
    temp = os.path.dirname(mptfile) + '/mpdata.tmp'
    print 2
    mpfile = open(temp, 'w')
    print 3
    copyline = False
    for line in mptfile:
        print 4
        if line.startswith('MP'):
            copyline = True
            print 5
        if copyline:
            print 6
            print>>mpfile, line
            copyline = False
    mpfile.seek(1)
    return None

エラー: http://i.imgur.com/fqfsi.jpg

4

2 に答える 2

2

へのパラメーターos.path.dirname()は文字列でなければなりませんが、明らかにファイル オブジェクトを渡しています。(これは意図したものですか?) 試してみてください

temp = os.path.dirname(mptfile.name) + '/mpdata.tmp'

代わりは。

(補足: 取得したトレースバックをよく見る必要があります。トレースバックは、エラーが発生している行を示しています。エラーを特定するために print ステートメントを実行する必要はありません。この場合、os.path.dirname()失敗したのはへの呼び出しであることがわかります。そのため、ドキュメントを確認して問題を診断する必要があります。)

于 2012-07-26T14:20:43.847 に答える