![](/img/trans.png)
[英]python remove the last line from the written file with file.write
[英]Python Only last line is written to file
当我执行打印时,将显示所有文本,但是当写入文件时,仅写入最后一步。
import json, urllib
from urllib import urlencode
import googlemaps
start = "Bridgewater, Sa, Australia"
finish = "Stirling, SA, Australia"
url = 'http://maps.googleapis.com/maps/api/directions/json?%s' % urlencode((
('origin', start),
('destination', finish)
))
ur = urllib.urlopen(url)
result = json.load(ur)
for i in range (0, len (result['routes'][0]['legs'][0]['steps'])):
j = result['routes'][0]['legs'][0]['steps'][i]['html_instructions']
print j
output = open("output.html", "w")
output.write(j)
output.close()
我也尝试过
output.write("%s\n" % j)
我得到一个错误,
output.write(result['routes'][0]['legs'][0]['steps'][i]['html_instructions'])
仅显示最后一步
我想念什么?
那是因为您正在for循环之外写入文件,所以j
仅包含最后一次迭代的值,因此您只将最后一行写入文件。
您应该改为在循环之前打开文件,然后在循环内部写入文件,也可以with
语句一起使用来打开文件,以便自动处理关闭操作。 范例-
with open("output.html", "w") as output:
for i in range (0, len (result['routes'][0]['legs'][0]['steps'])):
j = result['routes'][0]['legs'][0]['steps'][i]['html_instructions']
print j
output.write(j + '\n')
您只写最后一行,因为写操作在for循环之外:
with open("output.html", "w") as output:
for step in result['routes'][0]['legs'][0]['steps']:
print step['html_instructions']
output.write(step['html_instructions']+'\n')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.