我正在尝试使用Python的日志记录模块将列表输出到日志文件中。我使用的代码是:
import logging
import os
logging.basicConfig(filename = 'Log.log', level = logging.DEBUG, filemode = 'w', format = '%(asctime)s \t %(levelname)s \t %(message)s', datefmt="[%Y-%m-%d %H:%M:%S]")
file_list = []
for root, directories, files in os.walk('./Directory'):
files = [f for f in files]
for file in files:
file_list.append(os.path.join(root, file))
logging.info('Files in list: %s', file_list)
这使我将日志文件中的输出作为一行。
输出
[2015-03-14 11:41:53] INFO Files in list: ['./Directory/Subdirectory 1/file_a.dat', './Directory/Subdirectory 1/file_1b.dat', './Directory/Subdirectory 1/Subdirectory 11/file_11a.dat', './Directory/Subdirectory 1/Subdirectory 11/Subdirectory 111/file_111a.dat', './Directory/Subdirectory 2/Subdirectory 22/Subdirectory 221/file_221a.dat', './Directory/Subdirectory 2/Subdirectory 22/Subdirectory 221/file_221b.dat', './Directory/Subdirectory 2/Subdirectory 22/Subdirectory 221/file_221c.dat']
我需要的只是新行中列表中的文件名。
所需的输出
[2015-03-14 11:41:53] INFO Files in list: file_a.dat
file_1b.dat
file_11a.dat
file_111a.dat
file_221a.dat
file_221b.dat
file_221c.dat
如何在Python中完成?
答案 0 :(得分:1)
使用'\n'.join
合并字符串newline作为分隔符和生成器表达式来删除目录名称:
logging.info('Files in list: %s', '\n'.join(os.path.basename(f)
for f in file_list)))
答案 1 :(得分:1)
使用标准Pretty Print模块:
from pprint import pformat
logging.info('Files in list:\n%s', pformat(file_list))
输出示例:
[2015-03-14 14:23:47] INFO Files in list:
['./tmpvYWsRB.png',
'./Log.log',
'./tmpCG2Dn2',
'./ tmp7I36mh.png',
要仅打印文件名,请使用标准os.path.basename作为建议的用户4815162342。