我想每隔三行(从第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
line
,line
也会返回空白''。但是在运行脚本的过程中,输出是所需的输出,即
line2
line5
line8
line11
任何帮助或提示将不胜感激!
答案 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"
,您将覆盖循环的每个迭代。希望对您有所帮助。