web-dev-qa-db-ja.com

整数が必要ですか?開いた()

非常にシンプルなpythonスクリプトshouldid= 'としてフォーマットされた行を含むテキストファイルをスキャンします) value 'そして辞書に入れます。pythonモジュールはchval.pyと呼ばれ、入力ファイルはin.txtです。ここにコードがあります。 :

import os,sys
from os import *
from sys import *

vals = {}

f = open(sys.argv[1], 'r')

for line in val_f:
    t = line.split('=')
    t[1].strip('\'')
    vals.append(t[0], t[1])

print vals

f.close()

私がそれを実行しようとすると、私は得る:

トレースバック(最後の最後の呼び出し):
ファイル「chval.py」、9行目? f = open(sys.argv [1]、 'r')TypeError:整数が必要です

私はpython 2.4 ...を使用しています。新しいものを使用しないように挑戦されたので、open()について何かわからないことがありますか?なぜそれが必要なのですか?整数?

その行以降はテストされていません。要するに、なぜエラーが表示されるのですか?どうすれば修正できますか?

37
Victor

あなたがfrom os import *、(偶然)os.openを使用していますが、実際にはテキストの「r」または「w」の代わりに整数フラグが必要です。その行を取り出して、そのエラーを乗り越えます。

60
Mark Rushakoff

正当な理由なしに_import * from wherever_を実行しないでください(多くはありません)。

コードが組み込みのopen()関数の代わりにos.open()関数を選択しています。 os.open()を本当に使用する場合は、_import os_を実行してからos.open(....)を呼び出します。どちらのオープンを呼び出したい場合でも、必要な引数についてのドキュメントを読んでください。

12
John Machin

また、Python 2.6以降では、組み込み関数open()がio.open()関数のエイリアスになったことにも注意してください。 「from blah import *」などによる偶発的な名前空間の衝突を避けるために、Python 3の組み込みopen()を削除し、io.openの使用を必要とすることさえ考えられました。 Python 2.6+では、次のように書くことができます(また、このスタイルは良い習慣であると考えることもできます)。

import io
filehandle = io.open(sys.argv[1], 'r')
11
Wheat

これらのパラメーターを提供することで問題が解決しました。

with open('tomorrow.txt', mode='w', encoding='UTF-8', errors='strict', buffering=1) as file:
    file.write(result)
1
Hamid

http://www.tutorialspoint.com/python/os_open.htm からインポートと使用を維持することもできます

file = os.open( "foo.txt"、mode)

モードは次のとおりです。

os.O_RDONLY: open for reading only
os.O_WRONLY: open for writing only
os.O_RDWR : open for reading and writing
os.O_NONBLOCK: do not block on open
os.O_APPEND: append on each write
os.O_CREAT: create file if it does not exist
os.O_TRUNC: truncate size to 0
os.O_EXCL: error if create and file exists
os.O_SHLOCK: atomically obtain a shared lock
os.O_EXLOCK: atomically obtain an exclusive lock
os.O_DIRECT: eliminate or reduce cache effects
os.O_FSYNC : synchronous writes
os.O_NOFOLLOW: do not follow symlinks
0
Omar Jaafor