Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python未正确编辑文件_Python_Gpx - Fatal编程技术网

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: