读取特定行时在python中不输出任何输出到文本文件

时间:2018-10-09 07:55:45

标签: python loops text-files

我想每隔三行(从第2行开始)从文件打印到新文件。 文件(line.txt)的示例是

line1
line2
line3
line4
line5
line6
line7
line8
line9
line10
line11

输出将为

line2
line5
line8
line11

我写的脚本是

with open ('line.txt') as file:
    for line in file.read().split("\n")[1::3]:
        print (line)
        f = open('output.txt','w')
        f.write(line)
        f.close()

但是output.txt file中没有任何内容被复制。 output.txt保持空白。即使我在python IDLE中运行脚本后print lineline也会返回空白''。但是在运行脚本的过程中,输出是所需的输出,即

line2
line5
line8
line11

任何帮助或提示将不胜感激!

3 个答案:

答案 0 :(得分:1)

您正在关闭output.txt文件,并在每次循环时再次打开它。我建议将它们排除在循环范围之外:

string stringHtmlBodyfromFile = File.ReadAllText(Your HTML File URL);
                Microsoft.Office.Interop.Outlook.MailItem mailItem = app.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) as
                                                                     Microsoft.Office.Interop.Outlook.MailItem;
                mailItem.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML;
                mailItem.Importance = Microsoft.Office.Interop.Outlook.OlImportance.olImportanceHigh;
                mailItem.Subject = subject;
                mailItem.To = email;
                mailItem.HTMLBody = stringHtmlBodyfromFile;
                mailItem.CC = cc;
               //mailItem.Display();

注意:我还向写语句中添加了with open('output.txt', 'w') as f: with open ('line.txt', 'r') as file: for line in file.readlines()[1::3]: print(line) f.write(line) ,以在您的output.txt中包含行尾。

编辑:正如@DeepSpace正确指出的那样,您最好对两个文件都使用+'\n,而对with open()最好使用readlines()。使用read().split('\n'),您无需记住将其关闭。

答案 1 :(得分:0)

with open ('line.txt') as file:
        f = open('output.txt','w')
        for line in file.read().split("\n")[1::3]:
            outputline=line
            f.write(outputline)
        f.close()

答案 2 :(得分:0)

以下脚本根据您的描述写入文件output.txt中。 我希望将每三行(从第2行开始)从文件打印到新文件

output_file = open("output.txt", "a")
with open ('line.txt') as file:
    for line in file.readlines()[1::3]:
        output_file.write(line)
output_file.close()

我使用readlines()而不是read(),因为它读取整行而不是读取单个字符串。另外,我使用的是"a"而不是"w"的打开文件,因为附加模式允许您将内容附加到文件中。使用"w",您将覆盖循环的每个迭代。希望对您有所帮助。