非常にシンプルな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()について何かわからないことがありますか?なぜそれが必要なのですか?整数?
その行以降はテストされていません。要するに、なぜエラーが表示されるのですか?どうすれば修正できますか?
あなたがfrom os import *
、(偶然)os.openを使用していますが、実際にはテキストの「r」または「w」の代わりに整数フラグが必要です。その行を取り出して、そのエラーを乗り越えます。
正当な理由なしに_import * from wherever
_を実行しないでください(多くはありません)。
コードが組み込みのopen()関数の代わりにos.open()関数を選択しています。 os.open()を本当に使用する場合は、_import os
_を実行してからos.open(....)
を呼び出します。どちらのオープンを呼び出したい場合でも、必要な引数についてのドキュメントを読んでください。
また、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')
これらのパラメーターを提供することで問題が解決しました。
with open('tomorrow.txt', mode='w', encoding='UTF-8', errors='strict', buffering=1) as file:
file.write(result)
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