txt文件中的选项卡与终端

时间:2016-09-11 15:32:25

标签: python file

我正在学习Python,我想知道为什么标签文件在txt文件中看起来与写入终端时有所不同。

特别是,我运行了这个脚本

my_file = open('power.txt', 'w')
print( 'N \t\t2**N\t\t3**N' )
print( '---\t\t----\t\t----' )
my_file.write( 'N \t\t2**N\t\t3**N\n' )
my_file.write( '---\t\t----\t\t----\n' )

for N in range(11) :
    print( "{:d}\t\t{:d}\t\t{:d}".format(N, pow(2,N), pow(3,N)) )
    my_file.write( "{:d}\t\t{:d}\t\t{:d}\n".format(N, pow(2,N), pow(3,N)) )
my_file.close()

在其中你可以看到我在终端和power.txt文件中写了同样的东西。我在终端看到的是

enter image description here

我在txt文件中看到的是

enter image description here

正如您所看到的,第三列在终端中的排列比txt文件更好。我有两个问题:

  1. 由于我正在向两者写入完全相同的数据,为什么信息在txt文件中的显示方式不同?
  2. 如果我希望txt文件中的列与终端中的列一样排列(以提高可读性),我怎么能改变我的脚本呢?

1 个答案:

答案 0 :(得分:1)

不依赖于标签,它们取决于应用程序/控制台。请改用str.formatformat specification

BTW pow(2,N)是一个浮点数。你需要整体力量:2**N

写入标准输出的独立示例:

import sys

my_file = sys.stdout
header = "{:<10s}{:<10s}{:<10s}\n".format('N','2**N','3**N' )

my_file.write(header)

for N in range(11) :
    row =  "{:<10d}{:<10d}{:<10d}\n".format(N, 2**N, 3**N)
    my_file.write(row)

结果:

N         2**N      3**N      
0         1         1         
1         2         3         
2         4         9         
3         8         27        
4         16        81        
5         32        243       
6         64        729       
7         128       2187      
8         256       6561      
9         512       19683     
10        1024      59049     

(您可以使用遗留的C风格格式,例如%20s%-10s,但现在不赞成使用它,而且format界面更强大了。