将字符串附加到修改的行

2024-05-15 00:55:48 发布

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

我将尝试分步骤执行此操作:

1-问题: 我必须重写损坏的m3u文件,其行如下:

#EXTINF123#, Title - Song # let's say for clarity sake that the n line

d:\music\title - song.mp3 # this would be the n+1 line

实际上应该在哪里读(注意,标题很重要)

#EXTINF123#, Title - Song
Title - Song.mp3

第一部分是删除包含d:\音乐的行。。。然后这就给出了一条线,它必须被重写,就在它的下方,成为第n+1行

第一部分很简单,我得到了一个有很多行需要修改的文件

#EXTINF123#, Title - Song
#EXTINF123#, Title1 - Song1...

因此,我转向主。问题:

2-暂定解决方案

import in_place

    with in_place.InPlace('Soothing.m3u') as file:
        for line in file:
            file.write(line)
            file.write(line[12:])

3-(新)问题:

这不会将“.mp3”字符串附加到第二行(n+1)的末尾,即:

#ext123#, Title - Song
Title - Song

4-(新)暂定解决方案

4.1尝试“添加”字符串当然不行(那太容易了==>;没有乐趣)

file.write(line[12:] + ".mp3")

当然,这将在下一行的开头添加扩展名

4.2将光标“移动”到n+1行的开头

with in_place.InPlace('Soothing.m3u') as file:
    for line in file:
        file.write(line)
        file.write(".mp3")
        file.seek(-5,1)
        file.write(line[10:])

这将返回一个错误

Traceback (most recent call last):
  File "erase.py", line 7, in <module>
    file.seek(-5,1)
AttributeError: 'InPlace' object has no attribute 'seek'

之前,您会问:尝试切换到.txt文件不会改变任何问题。当然,可以用文本文件来测试它

4.3加入我想我这里有些东西。它不起作用,但如果你能帮助我理解为什么它会更有趣,我怀疑。。。我当然不会把答案翻过来:)

import in_place

with in_place.InPlace('Soothing.m3u') as file:
    for line in file:
        file.write(line)
        a = line[12:]
        b = ".mp3"      
        c = a.join(b)
        file.write(c)

它只是将b发送到各个地方,给出如下信息:

#EXTINF:135,Title - Song
.Title - Song
mTitle - Song
pTitle - Song
3#EXTINF:194,Title1 - Song1

欢迎任何帮助

操作系统:ubuntu 18.04

python 2.7,但可以使用python 3.7


Tags: 文件inforsongtitlewithlineplace

热门问题