为什么我在此代码中获得无效变量?

时间:2014-12-13 15:43:38

标签: python text-files

对于这段代码,我试图在文本文件中交换两个列,但是当运行column2 name' column2'未定义

file = open("class1.txt", 'r')
lines = file.readlines()
file.close()

for line in lines:
    parts = line.split() # split line into parts
    if len(parts) > 1:
        column1 = parts[0]
    if len(parts) < 1:
       column2 = parts[1]


file = open("class1.txt", 'w')
file.write(("\n") + str(column2) + str(column1))
file.close()

2 个答案:

答案 0 :(得分:1)

你搞砸了这部分:

if len(parts) < 1:
    column2 = parts[1]

我很确定你不想访问一个不存在的元素。

但无论如何,你不想依赖可能存在或不存在的变量。一定要给他们一些理智的默认值。

答案 1 :(得分:0)

  • 您想要交换第一列和第二列。
  • 您的输入文件与输出文件的名称相同,因此第一次运行程序时,您将覆盖输入文件。使用不同的名称。
  • 如果您使用with语句,则可以避免打开和关闭,然后像现在一样打开和关闭。您可以打开这两个文件来完成您的流程。

如果输入文件中的每一行都有两列,那么就像这样简单:

with open ("class1.txt", 'r') as fin, open("class2.txt", 'w') as fout:
    for line in fin.readlines():
        parts = line.split()
        fout.write(parts[1]+' '+parts[0]+'\n']

但是如果你有一些列有一列而有些有两行以上,你就必须做更多的事情。你的文件怎么样,你需要输出怎么样?