写入时间等于文件tex中的行数

2024-09-12 10:31:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我想通过检查文本文件中的行数在文本前面的每一行中写入时间。因为我想通过这个链接把这个文本文件转换成.srt文件。 https://unix.stackexchange.com/questions/111024/how-to-convert-a-txt-subtitle-file-to-srt-format

每一行是1秒。(在00:00:00开始第一行:)我的文件有很多行(500-1000行) 从

.......Text......... (first line)
.......Text......... (second line)
.......Text......... (third line)
    .
    .
    .
.......Text......... (60 line)
.......Text......... (61 line)
    .
    .
.................... (3600 line)

为了这个

00:00:01:.......Text......... (first line)
00:00:02:.......Text......... (second line)
00:00:03:.......Text......... (third line)
    .
    .
    .
00:01:00:.......Text......... (60 line)
00:01:01:.......Text......... (61 line)
    .
    .
01:00:00:.................... (3600 line)

现在我可以检查行数并在每行文本前面写文本。 但使用代码检查数字行和打开文件写入文本时出错。 我不知道如何写循环和比较行数。我不适合这个。你知道吗

def numberline(fname):
    with open(fname) as f:
           for i, l in enumerate(f):
                  pass
    return i + 1
numberline("/home/pi/gtest.txt")) 

dataFile = open("/home/pi/gtest.txt", "w")
    for line in range(numberline("/home/pi/gtest.txt")):
dataFile.write("00:00:%02d:\n" % line)
    dataFile.close()

请帮帮我。谢谢你 我的项目等待这一部分,因为这是python的最后一部分。 通常我在linux命令中使用Rpi,但在python中不懂。你知道吗


Tags: 文件totext文本txthomelinepi
2条回答

试试这个:

import datetime

str(datetime.timedelta(seconds=666))
result = ''
countTime = 0
for line in open('/home/pi/gtest.txt'):
    result = result + (str(datetime.timedelta(seconds=countTime)) + ":"  + line) + '\n'
    countTime = countTime+1
print (result)

然后可以将结果写入文件:

with open('/home/pi/gtest.txt', 'w') as the_file:
    the_file.write(result)

可以使用enumerate()函数在迭代时从文件中获取行号和行,并使用divmod()对数字进行除法和余数。在这里,我们做两次,首先从几秒钟(行号)到几分钟,然后从几分钟到几小时。你知道吗

然后,我们使用规则的%插值和%02d说明符将时/分/秒变量转换为零填充的两个字符长度的字符串,并用冒号将它们粘合到原始行。你知道吗

对于添加的元点,默认情况下,此脚本会对自身进行注释。:)

要将输出写入另一个文件,最简单的方法是使用shell:

$ python this-script.py > annotated.txt

顺便说一下,这是python3;print()语句在python2上看起来会有所不同。你知道吗

编辑:根据评论中的讨论添加了参数解析。脚本现在允许

$ python this-script.py inputfile.txt > annotated.txt

import argparse

ap = argparse.ArgumentParser()
ap.add_argument('input', default=__file__)
args = ap.parse_args()

with open(args.input, 'r') as f:
    for line_number, line in enumerate(f):
        minutes, seconds = divmod(line_number, 60)
        hours, minutes = divmod(minutes, 60)
        print('%02d:%02d:%02d:%s' % (hours, minutes, seconds, line), end='')

相关问题 更多 >