4

我在这里有一个简单的代码,它应该在文本文件中输出 2 列字符。

infile = open('anything.txt', 'r')
outfile = open('some.txt', 'w')
f = infile.readlines()
data=[]
a=['1','2','3']
b=['5','6','7']
for i in a:
  for j in b:
    outfile.write(i + "\t" + j + "\n")

当我用标准记事本打开生成的文本文件时,我得到的是这些奇怪的字符!ऱਵऱਸ਼ऱ਷लਵलਸ਼ल਷ळਵळਸ਼ळ਷</p>

但是,当我使用 Notepad++ 或 Wordpad 打开文本文件时,结果是两列数字,它们之间有一个制表符,正如我们所期望的那样。

我真的迷路了。到底是怎么回事 ?我不能用标准的记事本打开文本文件吗?

谢谢你的帮助。

4

3 回答 3

3
于 2012-06-13T15:59:11.623 回答
2

我没有这个问题,你用的是什么版本的Python,什么操作系统?

完成后,您应该明确关闭文件。

infile.close()
infile.close()

最好考虑使用with,因为它会在您完成或遇到异常时“自动”关闭您的文件:

with open('data.txt') as infile, open('some.txt', 'w') as outfile:

对于早期版本的 Python(2.7 之前?),您可能必须将其分为两部分:

with open('data.txt') as infile:  # default mode is "read" if not specified
  with open('some.txt', 'w') as outfile:

(鉴于您提到您使用 Python v2.4with对您不起作用,它是在 v2.5 中引入的 - 仍然很高兴了解它)

我得到这个输出:

1   5
1   6
1   7
2   5
2   6
2   7
3   5
3   6
3   7

另外,请注意您根本没有在程序中使用这三行:

infile = open('anything.txt', 'r')
f = infile.readlines()
data=[]
于 2012-06-13T13:47:02.123 回答
0

不同的编辑器可能会采用不同的字符编码。这可以解释为什么有些编辑器会正确显示结果。

于 2012-06-13T13:52:05.717 回答