将文本按列写入文件
作为一名律师,我在编程方面完全是个新手。不过我很热情,学到了很多东西,比如什么是变量等等。
我经常使用 dir()
这个函数,并查看它的结果。如果能把输出显示成一列或多列,那就更好了。所以我想写我的第一个程序,比如把 dir(sys)
的结果写到一个输出文件中,并且以列的形式展示。
到目前为止,我写了这个:
textfile = open('output.txt','w')
syslist = dir(sys)
for x in syslist:
print(x)
在屏幕上显示的结果正是我想要的,但是当我使用 .write
时,比如:
textfile = open('output.txt','w')
syslist = dir(sys)
for x in syslist:
textfile.write(x)
textfile.close()
文本就变成了一行行的。
有没有人可以帮我一下,怎么把 dir(sys)
的输出写到文件中,并且以列的形式展示呢?
如果可以的话,请用最简单的方法来写,因为我几乎每个单词都要在文档里查找。非常感谢!
4 个回答
我对你的问题有点困惑,但我觉得答案其实很简单,就是加上制表符。你只需要把 textfile.write(x)
改成 textfile.write(x + "\t")
,这样就可以了,对吧?你可以根据数据的大小来调整制表符的数量。
我正在修改我的回答。
需要注意的是,使用 dir(sys) 会给你一个字符串数组。这些字符串没有任何格式。print x
这个命令默认会添加一个换行符,所以你看到的每个字符串都在自己的一行上。但是,write 命令就不会这样做。因此,当你使用 write 时,需要自己添加必要的格式。如果你想让输出看起来和 print
一样,你需要加上 write(x + "\n")
,这样才能得到 print 自动添加的换行符。
其他的回答看起来都没错,他们猜测你是想添加一些 .write 方法没有提供的换行符。不过因为你刚开始接触编程,我想给你提一些在 Python 中的好习惯,这样会让你的编程生活更轻松:
with open('output.txt', 'w') as textfile:
for x in dir(sys):
textfile.write('{f}\n'.format(f=x))
这里的 'with' 是用 'open' 来作为一个上下文管理器。它会自动关闭你打开的文件,而且你一眼就能看到文件在哪里被打开。只在这个上下文管理器里保留那些需要的东西。此外,使用 .format 方法也是很推荐的。
print
默认会在输出的字符串后面加一个换行符,而 file.write
则不会。你可以这样做:
for x in syslist: textfile.write("%s\n" % x)
...在你添加内容的时候加上换行符。或者:
for x in syslist: textfile.write("%s\t" % x)
...在内容之间加上制表符。
希望这样对你来说是清楚的 "prima facie" ;)
欢迎来到Python的世界!
下面的代码会生成一个用制表符分隔的三列列表,但它不会自动对齐输出的内容。这个代码没有经过完全优化,所以应该更容易理解,我在添加的部分加了注释。
textfile = open('output.txt','w')
syslist = dir(sys)
MAX_COLUMNS = 3 # Maximum number of columns to print
colcount = 0 # Track the column number
for x in syslist:
# First thing we do is add one to the column count when
# starting the loop. Since we're doing some math on it below
# we want to make sure we don't divide by zero.
colcount += 1
textfile.write(x)
# After each entry, add a tab character ("\t")
textfile.write("\t")
# Now, check the column count against the MAX_COLUMNS. We
# use a modulus operator (%) to get the remainder after dividing;
# any number divisible by 3 in our example will return '0'
# via modulus.
if colcount % MAX_COLUMNS == 0:
# Now write out a new-line ("\n") to move to the next line.
textfile.write("\n")
textfile.close()
希望这对你有帮助!