from ds_store import DSStore with DSStore(r'D:\wkpy\.DS_Store') as ds: # 获取文件夹的图标位置 icon_location = ds[b'icvo'][b'view'][b'Iloc'][b'0'][b'0'] # 获取文件夹名称 folder_name = ds[b'bwsp'][b'flna'] # 获取文件夹的创建时间 create_time = ds[b'crtm'] 显示 self._superblk = self._store["DSDB"] ~~~~~~~~~~~^^^^^^^^ TypeError: string indices must be integers, not 'str' 这个错误怎么解决
时间: 2024-02-18 15:02:22 浏览: 108
DS_Store文件泄漏利用python脚本
这个错误可能是因为你的 `.DS_Store` 文件格式与 `ds_store` 库的版本不兼容导致的。请尝试更新 `ds_store` 库到最新版本,或者使用其他库来读取 `.DS_Store` 文件,例如 `biplist` 或 `xattr` 库。
如果你已经更新了 `ds_store` 库,但仍然出现这个错误,请检查你的 `.DS_Store` 文件是否正确生成,或者是否存在其他异常情况。你可以使用文本编辑器查看 `.DS_Store` 文件的内容,或者使用其他工具进行检查和修复。
另外,你可以尝试使用以下代码来读取 `.DS_Store` 文件,这可能可以避免上述错误:
```python
import plistlib
with open(r'D:\wkpy\.DS_Store', 'rb') as fp:
# 解析 .DS_Store 文件
plist = plistlib.load(fp)
# 获取文件夹的图标位置
icon_location = plist['icvo']['view']['Iloc'][0][0]
# 获取文件夹名称
folder_name = plist['bwsp']['flna']
# 获取文件夹的创建时间
create_time = plist['crtm']
```
这里使用了 Python 内置的 `plistlib` 库来读取 `.DS_Store` 文件,而不是使用第三方库 `ds_store`。如果你的 `.DS_Store` 文件格式正确,这段代码应该可以正常工作。
阅读全文