2017-05-15 17 views
0

Python 2.7でプロセスを反復するのに問題があります。 私はできるだけ最初のステップをデバッグするためにそれを単純化し、この上に構築したい。 私はデータに再利用のためにPythonのテキストファイルから行を繰り返すのに問題があります

data = ("-4.916409,36.629535,3.721236,255,232,242") 

を指定し、それが

X,Y,Z,R,G,B = data.split(",") 

を分割するために取得する場合、私はそれらの要素の名前で新しいファイルおよび/またはフォルダを作成する要素の一部を再結合することができます

RGB = (R + "+" + G + "+" + B) 
os.makedirs(inputFolder + os.sep + RGB) 
fo = open("Z:\\temp\\output" + os.sep + RGB + os.sep + RGB + ".txt", "w") 
fo.write(X + "," + Y + "," + Z + "\n") 

しかし、私はそれを長いテキストファイルからしようとすると、もはや要素をこの "RGB"にファイルおよび/またはフォルダ名( "R"または "G"または "B" ")、そしてge最初の行の戻り値。

inputFolder = ("Z:\\temp\\output") 
coordinates = open("Z:\\temp\\accident2.txt", "r") 
for line in coordinates: 
    X,Y,Z,R,G,B = line.split(",") 
    RGB = (R + "+" + G + "+" + B) 
    os.makedirs(inputFolder + os.sep + R) 
    fo = open("Z:\\temp\\output" + os.sep + R + os.sep + R + ".txt", "w") 
    fo.write(X + "," + Y + "," + Z + "\n") 

しかし、私は小数に整数から切り替えた場合、それは動作します:

RGB = (X + "," + Y + "," + Z) 

その後、私は書くことができます:

かなり右が、何に近いではありません
fo = open("Z:\\temp\\output" + os.sep + RGB + os.sep + RGB + ".txt", "w") 

が欲しいです。 小数点のある数字は、それがないものよりも読みやすくなります。 小数点以下のように整数を扱うように修正するにはどうすればよいですか?

答えて

0

あなたの座標はファイルオブジェクトですが、このオブジェクトから読み取る必要があります。実際には、readline、fileオブジェクトの関数を使って行単位で読むことができます。文書を確認してください

inputFolder = ("Z:\\temp\\output") 
with open("Z:\\temp\\accident2.txt", "r") as coordinates: 
    for linenumber,line in enumerate(coordinates.readlines()): 
     X,Y,Z,R,G,B = line[:-1].split(",") 
     RGB = (R + "+" + G + "+" + B) 
     try: 
     os.makedirs(inputFolder + os.sep + R) 
     fo = open("Z:\\temp\\output" + os.sep + R + os.sep + R + ".txt", "w") 
     fo.write(X + "," + Y + "," + Z + "\n") 
     except: 
     print "problem in line %d"%linenumber 
+0

エラーメッセージを表示してください。特大私はあなたの問題が何であるかを推測しています。また、行を読み込む場合は、デバッグする行を追加してください。行によって問題が発生します。私はこれを行う方法を示す私の答えを更新しました。 – rth

+0

質問と問題の説明を更新してください。できるだけ正確な記述をしてください。 – rth

+0

浮動小数点数にはピリオドが必要です。ピリオドはFatファイルシステムのファイル名と拡張子の区切りです。これが答えですか? ;) – rth

関連する問題