Python 将文本从一个文件传输到另一个文件
我在将dist参数从输入文件传输到结果文件时遇到问题,该参数位于输入文件中的同一位置 我的代码是:Python 将文本从一个文件传输到另一个文件,python,Python,我在将dist参数从输入文件传输到结果文件时遇到问题,该参数位于输入文件中的同一位置 我的代码是: import requests import json import time with open("query4.txt", "rt") as file: data_file = file.read() with open("result.txt", "w") as f_o: for line in data_file.split("\n"):
import requests
import json
import time
with open("query4.txt", "rt") as file:
data_file = file.read()
with open("result.txt", "w") as f_o:
for line in data_file.split("\n"):
for i in range(1):
drX, drY, fromX, fromY, dist = line.split(",")
url = "https://api.openrouteservice.org/directions?"
params = [
["api_key", "my_api_key"],
["coordinates", "%s,%s|%s,%s" % (drY, drX, fromY, fromX)],
["profile", "driving-car"]
]
headers = {
"Accept": "application/json, application/geo+json,"
"application/gpx+xml, img/png; charset=utf-8"}
responce = requests.get(url=url, params=params, headers=headers)
print(responce.url)
# print(responce.text)
result = json.loads(responce.text)
print(result)
for rows in result["routes"]:
print(rows["summary"]["distance"], file=f_o) # depending on how do you want the result
# print(result["routes"])
time.sleep(0)
输入样本:
48.94205856,38.48511505,48.94167600,38.49207300,511
46.54586411,30.64417267,46.53338808,30.65455914,1599
50.06436157,31.44526100,50.07415641,31.45929694,1482
50.35911942,30.94097710,50.33576900,30.95166500,2706
50.35837936,30.94162369,50.33576900,30.95166500,2614
作为现在的输出,我与json有一段距离
123.2
122.5
221
312.7
212
我想要这个
123.2 125
122.5 122
221 340
312.7 300
212 220
我用过这个,但似乎不起作用:
with open("query4.txt") as f:
input_file = f.read()
with open("result.txt", "w") as f1:
for line in input_file.split("\n"):
for line in f:
dX, dY, fX, fY, dst = line.split(",")
if "dst" in line:
f1.write(line)
只需将
dist
变量添加到print命令中即可。此外,还有一些改进可以为您的代码带来:
import requests
import json
url = "https://api.openrouteservice.org/directions?"
headers = {"Accept": "application/json, application/geo+json, application/gpx+xml, img/png; charset=utf-8"}
with open("query4.txt", "rt") as f_i, open("result.txt", "w") as f_o:
for line in f_i:
drX, drY, fromX, fromY, file_dist = line.split(",")
params = [
["api_key", "my_api_key"],
["coordinates", "%s,%s|%s,%s" % (drY, drX, fromY, fromX)],
["profile", "driving-car"]
]
response = requests.get(url=url, params=params, headers=headers)
result = json.loads(response.text)
for rows in result["routes"]:
f_o.write("{from_api} - {from_file}\n".format(from_api = rows["summary"]["distance"], from_file = file_dist) )
如果您想了解格式化部分,请查看:
只需将
dist
变量添加到print命令中即可。此外,还有一些改进可以为您的代码带来:
import requests
import json
url = "https://api.openrouteservice.org/directions?"
headers = {"Accept": "application/json, application/geo+json, application/gpx+xml, img/png; charset=utf-8"}
with open("query4.txt", "rt") as f_i, open("result.txt", "w") as f_o:
for line in f_i:
drX, drY, fromX, fromY, file_dist = line.split(",")
params = [
["api_key", "my_api_key"],
["coordinates", "%s,%s|%s,%s" % (drY, drX, fromY, fromX)],
["profile", "driving-car"]
]
response = requests.get(url=url, params=params, headers=headers)
result = json.loads(response.text)
for rows in result["routes"]:
f_o.write("{from_api} - {from_file}\n".format(from_api = rows["summary"]["distance"], from_file = file_dist) )
如果您想了解格式化部分,请查看:
对范围(1)中的i执行
的意义是什么?重点是给出每行应该执行多少次,这是关于时间。sleep()
如果范围为5,则文件中的每一行将被请求5次。我不明白为什么要对每一行执行多次,但这不是问题所在。更重要的是,预期输出中的第二个数字应该是什么?似乎您想使用api打印坐标之间的距离,您得到的结果有什么问题?我有一个与本地OR的距离,它表示为我上面给出的示例中坐标后的最后一个数字。这应该是2个ors之间的统计数据,我的(本地ors)和ors本身。我得到坐标之间的距离,但我想加上我一个月前或一年前得到的距离e.t.c来比较它们之间的差异。对范围(1)
中的I执行的意义是什么?重点是给出每行应该执行多少次,如果范围为5,则大约是time.sleep()
,文件中的每一行都将被请求5次。我不明白为什么要多次处理每一行,但这不是问题所在。更重要的是,预期输出中的第二个数字应该是什么?似乎您想使用api打印坐标之间的距离,您得到的结果有什么问题?我有一个与本地OR的距离,它表示为我上面给出的示例中坐标后的最后一个数字。这应该是2个ors之间的统计数据,我的(本地ors)和ors本身。我得到坐标之间的距离,但我想加上我一个月前或一年前得到的距离e.t.c,以比较它们之间的差异。谢谢代码。我得到了一个错误KeyError:“routes”,我试图找出错误。但是我什么也没看到。你的f_o.write
语句没有使用f
字符串。即使是这样,我也需要在写调用之前为from_api和from_文件赋值,而不是作为该调用的参数。你能通过打印来检查响应
对象和结果
dict的内容吗?@Ronaldaronson该死的,你说得对,我忘了格式
方法!我的错误,修正了。但是我更喜欢使用格式而不是f字串,因为使用关键字使它更可读。是的,伙计们,非常感谢。它做得很好。我真的很感谢你的帮助。非常感谢。谢谢你的密码。我得到了一个错误KeyError:“routes”,我试图找出错误。但是我什么也没看到。你的f_o.write
语句没有使用f
字符串。即使是这样,我也需要在写调用之前为from_api和from_文件赋值,而不是作为该调用的参数。你能通过打印来检查响应
对象和结果
dict的内容吗?@Ronaldaronson该死的,你说得对,我忘了格式
方法!我的错误,修正了。但是我更喜欢使用格式而不是f字串,因为使用关键字使它更可读。是的,伙计们,非常感谢。它做得很好。我真的很感谢你的帮助。非常感谢。