应该很容易修复,但我在这里看不到问题。
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)
我尝试了很多东西,但它总是打印出原始文件,并且不会更改任何时间戳。
答案 0 :(得分:1)
您的代码逻辑是:
对于文件中的每一行:
'<time>2014-01-19T18:30:00Z</time>'
,请构建该行的完全副本并将其写入输出文件;或您希望在两个文件之间进行哪些更改?
答案 1 :(得分:1)
文件中的文本行以换行符结束,因此您的相等测试将不起作用:
if line == '<time>2014-01-19T18:30:00Z</time>':
从行的开头和结尾删除空格:
if line.strip() == '<time>2014-01-19T18:30:00Z</time>':
无需再次将整数转换为int
,如果使用字符串格式,则无需转换为str()
:
output.write('<time>2014-01-19T{}:{}:{}Z</time>'.format(a, b, int(c))
您可能希望将这三个变量重命名为hours
,minutes
和seconds
,并修正if c >= 60:
行中的错误;很可能你想要其中一个来测试分钟,另一个是秒;你现在只测试秒值(c
)溢出两次。
您也不需要使用file.readlines()
;你可以直接在文件对象上循环 ;它会产生线条:
for line in input:
我会使用与input
不同的名称;您现在正在屏蔽内置的input()
函数。