gpt4 book ai didi

java - 尝试使用Python从遗留软件解析文件(mmp格式)

转载 作者:行者123 更新时间:2023-12-02 01:33:22 28 4
gpt4 key购买 nike

我有一个名为 Mixmeister 的旧版软件,它以 MMP 格式保存播放列表文件。

此格式似乎包含二进制和文件路径。

我希望从这些文件中提取文件路径以及任何其他信息。

我看到这是使用JAVA(我不知道JAVA)完成的(参见aorund ln 56): https://github.com/liesen/CueMeister/blob/master/src/mixmeister/mmp/MixmeisterPlaylist.java

和 Haskell 在这里: https://github.com/larjo/MixView/blob/master/ListFiles.hs

到目前为止,我已经尝试将文件读取为二进制文件(卡住了);使用正则表达式(困惑的输出,但取得了一定的成功)并尝试尝试一些代码来读取 block (超出了我的技能水平)。

我在正则表达式中使用并取得一定成功的代码是:

file='C:\\Users\\xxx\\Desktop\\mixmeisterfile.mmp'
with open(file, 'r', encoding="Latin-1") as filehandle:
#with open(file, 'rb') as filehandle:
for text in filehandle:
b = re.search('TRKF(.*)TKLYTRKM', text)
if b:
print(b.group())

同样,这让我很接近,但很困惑(数据并不完整,并且被 ascii 和二进制字符包围)。基本上,我的逻辑只是在两个字符串之间搜索以尝试提取文件名。我真正想做的是更接近 JAVA 在 GIT 中的东西,即(下面的代码是从 GIT 链接中采样的):

    List<Track> tracks = new ArrayList<Track>();
Marker trks = null;

for (Chunk chunk : trkl.getChunks()) {
TrackHeader header = new TrackHeader();
String file = "";
List<Marker> meta = new LinkedList<Marker>();

if (chunk.canContainSubchunks()) {
for (Chunk chunk2 : ((ChunkContainer) chunk).getChunks()) {
if ("TRKH".equals(chunk2.getIdentifier())) {
header = readTrackHeader(chunk2);
} else if ("TRKF".equals(chunk2.getIdentifier())) {
file = readTrackFile(chunk2);
} else {
if (chunk2.canContainSubchunks()) {
for (Chunk chunk3 : ((ChunkContainer) chunk2).getChunks()) {
if ("TRKM".equals(chunk3.getIdentifier())) {
meta.add(readTrackMarker(chunk3));
} else if ("TRKS".equals(chunk3.getIdentifier())) {
trks = readTrackMarker(chunk3);
}
}
}
}
}
}

Track tr = new Track(header, file, meta);

我猜如果不使用正则表达式,这将使用 RIFF 或 Python 中的 block 库?尽管我阅读了https://docs.python.org/2/library/chunk.html处的文档,我不确定我是否理解如何进行这样的事情 - 主要是我不理解如何正确读取具有可见混合文件路径的二进制文件。

最佳答案

我真的不知道这里发生了什么,但我会尽力而为,如果不起作用,请原谅我的愚蠢。当我有一个为 Metar 解析天气数据的项目时,我意识到我的主要问题是我试图将所有内容都转换为 String 类型,这并不适合所有数据,因此它会什么都没有。你的 for 循环应该可以正常工作。然而,当你遍历的时候,你是否尝试过让所有的东西都变成相同的类型,比如Character/String类型?也许某些元素被搞乱只是因为它们与您想要的类型不匹配。

关于java - 尝试使用Python从遗留软件解析文件(mmp格式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57541322/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com