用Python编写格式良好的文本
在Python中,我使用如下代码编写文本文件:用Python编写格式良好的文本,python,file,text,Python,File,Text,在Python中,我使用如下代码编写文本文件: f.write(filename + type + size + modified) 当然,输出看起来非常难看: C:/Config/ControlSet/__db.006 file 56 KB 2012-Apr-30 10:00:46.467 AM C:/Config/ControlSet dir 68881 KB 2012-Apr-30 10:00:46.396 AM C:/Config/DataSt
f.write(filename + type + size + modified)
当然,输出看起来非常难看:
C:/Config/ControlSet/__db.006 file 56 KB 2012-Apr-30 10:00:46.467 AM
C:/Config/ControlSet dir 68881 KB 2012-Apr-30 10:00:46.396 AM
C:/Config/DataStore.avlocate file 0 KB 2012-Apr-30 09:57:42.440 AM
C:/Config/DataStoreLocate.bak file 0 KB 2012-Apr-30 09:57:42.470 AM
C:/Config/DeviceConnections/devconn.bak file 41 KB 2012-Apr-30 10:39:50.181 AM
C:/Config/DeviceConnections/devconn.cfg file 41 KB 2012-May-29 10:12:45.288 AM
但我想对齐条目,使其看起来像这样:
C:/Config/ControlSet/__db.006 file 56 KB 2012-Apr-30 10:00:46.467 AM
C:/Config/ControlSet dir 68881 KB 2012-Apr-30 10:00:46.396 AM
C:/Config/DataStore.avlocate file 0 KB 2012-Apr-30 09:57:42.440 AM
C:/Config/DataStoreLocate.bak file 0 KB 2012-Apr-30 09:57:42.470 AM
C:/Config/DeviceConnections/devconn.bak file 41 KB 2012-Apr-30 10:39:50.181 AM
C:/Config/DeviceConnections/devconn.cfg file 41 KB 2012-May-29 10:12:45.288 AM
我的问题与类似,只是我不知道文件名会提前多长时间。我该怎么做呢?我想你要找的是方法,也许也是 正如文档中所说,如果原始字符串太长,则返回原始字符串,因此您永远不会截断任何数据,但您必须提前找出最长的长度,以获得真正完美的格式。我建议只使用一个相当大的数值,除非它必须是完美的 类似于
f.write(
"{0} {1} {2} {3}".format(
filename.ljust(max_filename),
type.rjust(max_type),
size.rjust(max_size),
modified.rjust(max_modified)
)
)
就可以了。如果您可以先获得所有文件名的列表,那么您可以执行以下操作:
max_width = max(len(filename) for filename in filenames)
for filename in filenames:
f.write(filename.ljust(max_width+1)+..whatever else..)
f.write('%-40s %6s %10s %2s\n' % (filename, type, size, modified))
如果您无法首先获得所有文件名的列表,那么就无法确保所有文件都对齐,因为无法知道以后是否会得到一个名称非常长的文件
但是,在这种情况下,我通常会假设N列通常足够了,对于某些N,在这种情况下,您可以执行以下操作:
max_width = max(len(filename) for filename in filenames)
for filename in filenames:
f.write(filename.ljust(max_width+1)+..whatever else..)
f.write('%-40s %6s %10s %2s\n' % (filename, type, size, modified))