用Python编写格式正确的文本

发布于 2021-01-29 15:25:35

在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

我的问题类似于此问题,除了我不知道文件名会提前多长时间。我应该如何处理?

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    如果可以先获取所有文件名的列表,则可以执行以下操作:

    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))
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看