【问题标题】:Walking sub directories in Python and saving to same sub directory在 Python 中遍历子目录并保存到同一个子目录
【发布时间】:2014-06-12 13:45:25
【问题描述】:

首先感谢您阅读本文。我有点卡在 Python 中的子目录行走(然后保存)。我下面的代码能够依次遍历每个子目录并处理文件以搜索某些字符串,然后生成一个 xlsx 文件(使用 xlsxwriter)并将我的搜索数据发布到 Excel。

我有两个问题……

我遇到的第一个问题是我想在每个目录中处理一个文本文件,但每个子目录的文本文件名各不相同,所以我不想指定“Textfile.txt”,而是做一些类似 *.txt 的事情。 txt(我会在这里使用 glob 吗?)

第二个问题是,当我打开/创建 Excel 时,我想将文件保存到已找到并处理 .txt 文件的同一子目录中。目前我的 Excel 正在保存到 python 脚本目录,因此每次打开和处理新的子目录时都会被覆盖。将Excel末尾保存到子目录会更明智,还是可以从一开始就使用当前子目录路径创建它?

这是我的部分工作代码...

for root, subFolders, files in os.walk(dir_path):
    if 'Textfile.txt' in files:
        with open(os.path.join(root, 'Textfile.txt'), 'r') as f:

            #f = open(file, "r")    
            searchlines = f.readlines()
            searchstringsFilter1 = ['Filter Used          :']
            searchstringsFilter0 = ['Filter Used          : 0']

            timestampline = None
            timestamp = None
            f.close()

            # Create a workbook and add a worksheet.
            workbook = xlsxwriter.Workbook('Excel.xlsx', {'strings_to_numbers': True})
            worksheetFilter = workbook.add_worksheet("Filter")

再次感谢您查看此问题。

米克

【问题讨论】:

    标签: python glob os.walk xlsxwriter


    【解决方案1】:

    我不会完全解决你的代码,但这里有一些提示:

    每个子目录的文本文件名各不相同,所以我不想指定“Textfile.txt”,而是像 *.txt 那样做

    您可以列出目录中的所有文件,然后检查文件扩展名

    for filename in files:  
      if filename.endswith('.txt'):  
        # do stuff
    

    另外在创建工作簿时,你可以输入路径吗?你有根,对吧?为什么不使用它?

    【讨论】:

      【解决方案2】:

      您不需要 glob,因为您已经在 files 变量中拥有一个文件列表。因此,过滤它以查找所有文本文件:

      import fnmatch
      txt_files = filter(lambda fn: fnmatch.fnmatch(fn, '*.txt'), files)
      

      要将文件保存在同一子目录中:

      outfile = os.path.join(root, 'someoutfile.txt')
      

      【讨论】:

        猜你喜欢
        • 2016-01-22
        • 1970-01-01
        • 1970-01-01
        • 2016-03-24
        • 2018-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多