Python格式化%s子目录并写入

Python格式化%s子目录并写入,python,file,Python,File,我有多个子文件夹,其中每个子文件夹中有两个图像 我的目标是拍摄每个图像文件并替换为%s,然后写入同一文件夹中的latex.txt。并对每个文件夹执行此操作 到目前为止,我可以在每个文件夹中创建.txt文件并对其进行写入 但是,我也不能用图像名称替换%s,我的.txt文件并没有在新的行中写入\n 当我打印图像时,我会在每个子文件夹的列表中获得图像 \end{document}%filename.encode'utf-8'我在这里多次更改此代码,尝试从列表中获取值,但不起作用。我留下了我开始的东西。

我有多个子文件夹,其中每个子文件夹中有两个图像

我的目标是拍摄每个图像文件并替换为%s,然后写入同一文件夹中的latex.txt。并对每个文件夹执行此操作

到目前为止,我可以在每个文件夹中创建.txt文件并对其进行写入

但是,我也不能用图像名称替换%s,我的.txt文件并没有在新的行中写入\n

当我打印图像时,我会在每个子文件夹的列表中获得图像


\end{document}%filename.encode'utf-8'我在这里多次更改此代码,尝试从列表中获取值,但不起作用。我留下了我开始的东西。这只会将最后一个图像替换为%s

,类似这样的操作应该可以,我删除的LaTeX代码中还有一个\end{tabular}放错了位置。还根据您的要求收集images变量中图像的文件路径

import os
walk_dir = 'C:/Users/XX/Desktop/Main/'

for root, subdirs, files in os.walk(walk_dir):
    list_file_path = os.path.join(root, 'latex.txt')

    with open(list_file_path, 'w') as list_file:
        images = []
        for filename in files:
            file_path = os.path.join(root, filename)
            images.append(file_path)

        if len(images) >= 1:
            document = """
            \\documentclass{article}
            \\usepackage[utf8]{inputenc}
            \\usepackage{graphicx}
            \\usepackage{subcaption}
            \\hfill  & \\Large \\textbf{EXAMPLE}
            \\hspace*{-3cm}
            %s
            \\end{document}
            """
            figure = """
            \\begin{subfigure}{0.6\\textwidth}
            \\centering
            \\includegraphics[width=1\\linewidth]{%s}
            \\label{fig:sfig%d}
            \\end{subfigure}
            """
            separator = """
            \\hspace{0.5in}
            """
            figures = separator.join([figure % (image, i) for i, image in enumerate(images)])
            list_file.write(document % figures)

您有%s两次,这会引发类型错误:没有足够的参数用于格式字符串您还应该使用os.linesep,而不是\n用于换行符。@bernie您是对的,我必须删除一个%s才能正常工作,但我仍然无法获得所需的输出,因此您希望将文件名插入到何处?请使用三个引号,如“或索引器”或“列表索引超出范围”“我们正在循环子文件夹以获取文件名的多个文件:对,编辑了答案,请立即尝试。当您行走的子曲面中没有2个文件时,就会发生错误。根据您的目录结构,您甚至可能不需要执行os.walk。这非常有效!!!非常感谢。我猜如果我有两张以上的图片,这就行了?只需将%images[0],images[1]添加到此处,实际上不是这样,但我已经编辑过,现在它可以用于目录中的任意数量的图像。你也可以在你的循环文件或任何你正在使用的图像格式中添加if filename.endsWith.png,这样它只拾取图像而不拾取其他文件。谢谢!!我有另一个脚本,它使用startswith和endswith为我创建这个子文件夹,其中包含适当的png文件
import os
walk_dir = 'C:/Users/XX/Desktop/Main/'

for root, subdirs, files in os.walk(walk_dir):
    list_file_path = os.path.join(root, 'latex.txt')

    with open(list_file_path, 'w') as list_file:
        images = []
        for filename in files:
            file_path = os.path.join(root, filename)
            images.append(file_path)

        if len(images) >= 1:
            document = """
            \\documentclass{article}
            \\usepackage[utf8]{inputenc}
            \\usepackage{graphicx}
            \\usepackage{subcaption}
            \\hfill  & \\Large \\textbf{EXAMPLE}
            \\hspace*{-3cm}
            %s
            \\end{document}
            """
            figure = """
            \\begin{subfigure}{0.6\\textwidth}
            \\centering
            \\includegraphics[width=1\\linewidth]{%s}
            \\label{fig:sfig%d}
            \\end{subfigure}
            """
            separator = """
            \\hspace{0.5in}
            """
            figures = separator.join([figure % (image, i) for i, image in enumerate(images)])
            list_file.write(document % figures)