在Python中以ASCII格式打开二进制文件

在Python中以ASCII格式打开二进制文件,python,binaryfiles,Python,Binaryfiles,我想打开一个ASCII格式的二进制文件(是的,另一个soft synth soundbank),检查它是否包含字符串。文件夹中有多个文件,但我已经为其编写了相应的代码,我只希望它在文件中搜索子字符串 我以前尝试过使用ASCII编码函数打开相同的格式,但它不显示我想要的数据(它显示一些乱码数据,与在十六进制编辑器中使用ASCII打开文件的操作完全不同)。有人能给我指出正确的方向吗 编辑:如下所述,这是我正在使用的新代码: # sbf_check.py (sample code I've writt

我想打开一个ASCII格式的二进制文件(是的,另一个soft synth soundbank),检查它是否包含字符串。文件夹中有多个文件,但我已经为其编写了相应的代码,我只希望它在文件中搜索子字符串

我以前尝试过使用ASCII编码函数打开相同的格式,但它不显示我想要的数据(它显示一些乱码数据,与在十六进制编辑器中使用ASCII打开文件的操作完全不同)。有人能给我指出正确的方向吗

编辑:如下所述,这是我正在使用的新代码:

# sbf_check.py (sample code I've written to test the sbf file before implementing in into the main.py file)

path = "C:\\Users\\User\\AppData\\Roaming\\RevealSound\\Banks\\Aura Qualic Trance.sbf"
file = open(path, "rb")

for x in file:
    line = file.readline()
    new = line.decode("ASCII")
    print(new)
main.py文件:

import glob, os

path = "C:\\Users\\User\\AppData\\Roaming\\RevealSound\\Banks"

for filename in glob.glob(os.path.join(path, "*.sbf")):
    with open(os.path.join(os.getcwd(), filename), "r") as f:
        # code to decode sbf file to ASCII, then search for the substring in the main string
十六进制编辑器:

(注意:红色圆圈的数据对我来说并不重要,因为它是参数数据,我只想搜索预设名称。这与我之前的问题不同,我需要跳过参数数据。)

代码输出(VS代码):

回溯(最近一次呼叫最后一次):
文件“c:\Users\User\Desktop\Programming\sbf\u check.py”,第6行,在
新=行解码(“ASCII”)
UnicodeDecodeError:“ascii”编解码器无法解码位置0中的字节0xd7:序号不在范围内(128)

以下操作是否符合您的要求?它应该通过显示豆腐盒来处理非UTF-8字符,而不是抛出解码错误

path = "C:\\Users\\User\\AppData\\Roaming\\RevealSound\\Banks\\" \
       "Aura Qualic Trance.sbf"

with open(path, errors='ignore') as f:
    print(f.read())

你能给我一个具体的例子吗?@xjcl我想打开的文件?这是一个尖塔音箱(.sbf)。我不关心参数数据,我只想检查是否有子字符串(预设名称)。我以前问过一个关于Sylenth1 soundbanks的类似问题,因此我没有写太多细节,以避免它被标记为与我之前的问题重复。我的意思是,你能用hexedit显示一个示例文件,以及你的代码输出的内容吗?他们真的应该匹配。@xjcl哦,当然。我会再编辑一下。@xjcl现在可能没问题了,你能检查一下吗?是的,有!谢谢你的帮助。
path = "C:\\Users\\User\\AppData\\Roaming\\RevealSound\\Banks\\" \
       "Aura Qualic Trance.sbf"

with open(path, errors='ignore') as f:
    print(f.read())