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