Python未正确编辑文件
应该很容易修复,但我看不出这里有什么问题Python未正确编辑文件,python,gpx,Python,Gpx,应该很容易修复,但我看不出这里有什么问题 a = 18 b = 30 c = 00 input = open('13.gpx', 'r') output = open('14.gpx', 'w') for line in input.readlines(): if line == '<time>2014-01-19T18:30:00Z</time>': d = str(int(a)) e = str(int(b))
a = 18
b = 30
c = 00
input = open('13.gpx', 'r')
output = open('14.gpx', 'w')
for line in input.readlines():
if line == '<time>2014-01-19T18:30:00Z</time>':
d = str(int(a))
e = str(int(b))
f = str(int(c))
output.write('<time>2014-01-19T' + d + ':' + e + ':' + f + 'Z</time>')
c = c + 18.4712
if c >= 60:
b = b + 1
c = c - 60
else:
print('hi')
if c >= 60:
a = a + 1
b = b - 60
else:
print('hi')
else:
output.write(line)
a=18
b=30
c=00
输入=打开('13.gpx','r')
输出=打开('14.gpx','w')
对于input.readlines()中的行:
如果行=='2014-01-19T18:30:00Z':
d=str(int(a))
e=str(int(b))
f=str(int(c))
输出.写入('2014-01-19T'+d+':'+e+':'+f+'Z'))
c=c+18.4712
如果c>=60:
b=b+1
c=c-60
其他:
打印('hi')
如果c>=60:
a=a+1
b=b-60
其他:
打印('hi')
其他:
输出。写入(行)
我尝试了很多方法,但它总是从原始文件打印出来,并且不会更改任何时间戳。您的代码逻辑是:
对于文件中的每一行:
'2014-01-19T18:30:00Z'
,则构建该行的精确副本并将其写入输出文件;或您希望在这两个文件之间更改哪些内容?文件中的文本行以换行符结尾,因此您的相等性测试将不起作用:
if line == '<time>2014-01-19T18:30:00Z</time>':
您可能希望将这三个变量重命名为hours
、minutes
和seconds
,并修复中的错误(如果c>=60:
行);很可能你想要其中一个测试分钟,另一个测试秒;您现在只测试秒值(c
)是否溢出两次
您也不需要使用file.readlines()
;可以直接在文件对象上循环;它将产生以下行:
for line in input:
我会使用不同于
input
的名称;您现在正在屏蔽内置的input()
函数。我输入了“c=c+18.4712”,因此文件中每个时间戳实例之间的时间肯定应该累计约18秒?实际上,当您使用int()
时,正好是18秒。但是Martijn是正确的;如果没有'\n'
或strip()
,它永远不会匹配。这很好,但在前586行之后它就会停止,知道原因吗?@user3212959:不知道原因,除非只有586行。代码中没有停止循环的内容。另外,第568行在两个文件之间没有对齐,因此缺少一些行?哦dear@user3212959:同样,此循环中的任何内容都不会导致;也许你的行对于输入来说还是太严格了?好吧,现在除了最后一行之外,它对每一行都有效,但是仍然拒绝处理超过568行的内容
output.write('<time>2014-01-19T{}:{}:{}Z</time>'.format(a, b, int(c))
for line in input: