麻烦迭代Python中的文本文件中的行以供重用

时间:2017-05-15 22:04:16

标签: python-2.7 split

我在Python 2.7中迭代一个进程时遇到了麻烦。 我已经尽可能地简化它以调试第一步,并希望在此基础上进行构建。 如果我指定数据

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"作为文件和/或文件夹名称(仅限#34; R"或" G"或" B"),并且只获得第一行的回报。

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")

哪个不太正确,但更接近我想要的。 为什么带小数的数字更容易"读"比那些没有? 我如何修复它,以便整数被视为带小数的那些?

1 个答案:

答案 0 :(得分:0)

你的坐标是一个文件对象,你需要从这个对象中读取。实际上,您可以使用readlines,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