Прочитайте многоэлементный список, найдите элемент и распечатайте его на python - PullRequest
1 голос
/ 19 июня 2011

Я пишу скрипт на Python, чтобы написать текстовый файл.Но мне пришлось использовать некоторую информацию из другого файла.Такой файл имеет названия меню в каждой строке, которые мне нужно использовать.Я использую разделение, чтобы иметь список для каждой строки моего «меню».Например, мне пришлось написать раздел с каждым вторым элементом моих списков, но после запуска я получил что-нибудь, что я мог сделать?

Это примерно то, что я делаю:

    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()

Кстати, в строке включения я должен был увеличить число после pg_ с "0001" до "25050".Любые подсказки ??

Я очень ценю вашу помощь.

1 Ответ

2 голосов
/ 19 июня 2011

Я не совсем понимаю ваш вопрос. Но я вижу несколько ошибок в вашем коде. Самое главное:

    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()
...