ユーザーが指定したパスを読み取り、その特定のパスに存在するtxtファイルの最初の2行を読み込むプログラムを作成しようとしています。Python - txtファイルから最初の2行を読み取る
私はなぜ理解していない "TypeError例外:::Unicodeに強制変換が必要文字列またはバッファは、見つかっdをbuiltin_function_or_metho"
問題は、私はこのエラーを与えてるということでしょうか?
ユーザーが指定したパスを読み取り、その特定のパスに存在するtxtファイルの最初の2行を読み込むプログラムを作成しようとしています。Python - txtファイルから最初の2行を読み取る
私はなぜ理解していない "TypeError例外:::Unicodeに強制変換が必要文字列またはバッファは、見つかっdをbuiltin_function_or_metho"
問題は、私はこのエラーを与えてるということでしょうか?
組み込みのdir
はディレクトリ名を意味すると誤っているようです。いいえ、ちがいます。
あなたはos.chdir
なくdir
にディレクトリパスを渡しする必要があります。
os.chdir('/some/directory/path')
ところで、あなたは2つの行を取得するためにファイル全体をメモリに読み込む必要はありません、あなたは、単に上next
を呼び出すことができますファイルオブジェクト:
with open(file) as f:
line1, line2 = next(f), next(f)
よろしくお願いします。 私はLinuxの私のコマンドラインでPythonを実行しています – LinuxN00b
コマンドラインから引数として渡されましたか? 'os.chd ir(sys.argv [1]) ' –
、入力中にパスがない場合、エラーメッセージを印刷した後に終了する必要があり、そうでなければ、
についてはIndexErrorを取得しますos.chdir(sys.argv[1])
、ファイルが一つだけのラインを持っている場合、第二next(f)
はどちらかcatchedれるべき呼び出すとStopIteration例外を与える、またはあなたが、これは場合には、空の文字列がデフォルトになります、二行目のためnext(f, "")
を使用することができますファイルの終わりに達しました。
EDIT:間違ったパスに入りました。 :(
[OK]を、ので、私は今、コードを編集していると私はエラーを取得していない。問題は、今私はそれを実行した場合python readfiles.py /home/
何も起こらないと?手始めに
#!/usr/bin/python
import glob, os
import sys
#Check to see that path was privided
if len(sys.argv) < 2:
print "Please provide a path"
sys.exit()
#Find files in path given
os.chdir(sys.argv[1])
#Chose the ones with txt extension
for file in glob.glob("*.txt"):
try:
#Read and output first two lines of txt file
with open(file) as f:
line1, line2 = next(f), next(f, "")
print line1 + " " + line2
#Catch exception errors
except IOError:
print "Failed to read " + file
を、あなたは2行目を印刷し、3されていることです – timgeb
'os.chdir(dir)'この行に 'dir'が何を表していると思いますか? – DeepSpace
は' f.close'と思われます、いいえ? – itzMEonTV