1

我有一个文本文件(songs.txt),其中包含许多类似于下面引用的文本的行。我想要的是把左边和右边分开。双方将根据他们站在&&&&&&的哪一方来确定。有两个部分,搜索字符串和歌曲长度。例如:

唐·暗黑破坏神 - M1 毒刺 &&&&&& 204

左边部分是 &&&&&& 右边的文本,右边部分&&&&&&右边的部分

左侧部分Don Diablo - M1 stinger

右侧部分204

从那时起,这些命令就可以通过一个 PIPE 来执行。文本文件中每行有两个命令,然后是与右边部分长度相同的延迟(歌曲长度,以秒为单位设置)。

例如:

search Don Diablo - M1 stinger

play 1

现在将在相同的 204 秒处休息。然后它会从文件中获取下一行。喜欢并一直如此。

问题是,我在 Python 中玩过一些,现在我真的不知道。我已经阅读了一些解决方案,但它们并没有我那么有用。

如果有人能告诉我如何在实践中做到这一点,我会很高兴?,甚至可能吗?

如果有人会对此进行黑客攻击,这里有songs.txt

注意:我使用的是 Python 2.7.4

4

1 回答 1

1

我不清楚您所说的“管道”命令是什么意思,但我认为解决方案有三个关键要素:

  1. 在 Python 中,文件是“可迭代的”,这意味着您可以在 for 循环的右侧使用一个打开的(文本)文件,它将遍历文件的行:

    for line in open('songs.txt'):
    
  2. 可以使用partition字符串对象的方法来分割线的左侧和右侧:

        left, sep, right = line.partition('&&&&&&')
    

    请注意,“右”元素将包含行尾字符,并且两者都可能包含额外的left空格right。你可能想用strip.

        left = left.strip()
        right = right.strip()
    
  3. 实际运行的命令可能应该使用subprocess来完成,它可以处理阻塞调用(使用callor check_call)或在后台运行命令并使用Popen. 请注意,所有这些命令都需要一个参数列表,而不仅仅是一个命令行字符串——子进程文档应该在这里有所帮助。

于 2013-11-11T22:09:00.207 回答