我正在编写一个python脚本来编写一个tex文件。但我必须使用另一个文件中的一些信息。这样的文件在我需要使用的每一行中都有菜单名称。我使用split来为我的“菜单”的每一行都有一个列表。 例如,我必须用我的列表中的每个第二个元素写一个部分,但是在运行之后,我得到了什么,我该怎么办?
这正是我正在做的事情:
texfile = open(outputtex.tex', 'w')
infile = open(txtfile.txt, 'r')
for line in infile.readlines():
linesplit = line.split('^')
for i in range(1,len(infile.readlines())):
texfile.write('\section{}\n'.format(linesplit[1]))
texfile.write('\\begin{figure*}[h!]\n')
texfile.write('\centering\n')
texfile.write('\includegraphics[scale=0.95]{pg_000%i.pdf}\n' %i)
texfile.write('\end{figure*}\n')
texfile.write('\\newpage\n')
texfile.write('\end{document}')
texfile.close()
顺便说一句,在inclugraphics行中,我不得不将pg_之后的数字从“0001”增加到“25050”。任何线索??
我非常感谢你的帮助。
答案 0 :(得分:2)
我不太关注你的问题。但是我在你的代码中看到了几个错误。最重要的是:
for line in infile.readlines():
...
...
for i in range(1,len(infile.readlines())):
一旦你读到一个文件,它就消失了。 (你可以把它拿回来,但在这种情况下没有意义。)这意味着对readlines
的第二次调用没有任何结果,所以len(infile.readlines()) == 0
。假设你在这里写的是你想要做的(即写file_len * (file_len - 1) + 1
行?)那么你可能应该将文件保存到列表中。此外,你没有在你的文件名周围加上引号,你的缩进很奇怪。试试这个:
with open('txtfile.txt', 'r') as infile: # (with automatically closes infile)
in_lines = infile.readlines()
in_len = len(in_lines)
texfile = open('outputtex.tex', 'w')
for line in in_lines:
linesplit = line.split('^')
for i in range(1, in_len):
texfile.write('\section{}\n'.format(linesplit[1]))
texfile.write('\\begin{figure*}[h!]\n')
texfile.write('\centering\n')
texfile.write('\includegraphics[scale=0.95]{pg_000%i.pdf}\n' %i)
texfile.write('\end{figure*}\n')
texfile.write('\\newpage\n')
texfile.write('\end{document}')
texfile.close()
也许你真的不想要嵌套循环?
infile = open('txtfile.txt', 'r')
texfile = open('outputtex.tex', 'w')
for line_number, line in enumerate(infile):
linesplit = line.split('^')
texfile.write('\section{{{0}}}\n'.format(linesplit[1]))
texfile.write('\\begin{figure*}[h!]\n')
texfile.write('\centering\n')
texfile.write('\includegraphics[scale=0.95]{pg_000%i.pdf}\n' % line_number)
texfile.write('\end{figure*}\n')
texfile.write('\\newpage\n')
texfile.write('\end{document}')
texfile.close()
infile.close()