用Python编写格式正确的文本
在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/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
我的问题类似于此问题,除了我不知道文件名会提前多长时间。我应该如何处理?
-
如果可以先获取所有文件名的列表,则可以执行以下操作:
max_width = max(len(filename) for filename in filenames) for filename in filenames: f.write(filename.ljust(max_width+1)+..whatever else..)
如果无法首先获得所有文件名的列表,则无法确保所有文件都对齐,因为无法知道以后是否会获得名称很长的文件。
但是,在这种情况下,我通常只假设N列通常足以满足N个需求,在这种情况下,您可以执行以下操作:
f.write('%-40s %6s %10s %2s\n' % (filename, type, size, modified))