python - 如何在 python 脚本中添加目录位置?
问题描述
我可能会对这个文件有 3 个问题,但现在我将专注于这个问题,而不是我需要做的补充。我有一个脚本可以完美地创建目录内容的 json 文件。我遇到的问题在第 9 行。它给我的输出是正确的,但是目录路径没有在音频播放器应用程序中正确加载,因为目录路径需要在前面加上 ../audio/
这是脚本:
import os
import errno
def path_hierarchy(path):
hierarchy = {
# 'name': os.path.basename(path),
'artist': os.path.basename(path),
'album': 'Node 42177',
'url': os.path.basename(path), # HERE!
'cover_art_url': '../album-art/Radio.jpg',
}
try:
hierarchy['children'] = [
path_hierarchy(os.path.join(path, contents))
for contents in os.listdir(path)
]
except OSError as e:
if e.errno != errno.ENOTDIR:
raise
#hierarchy['type'] = 'file'
return hierarchy
if __name__ == '__main__':
import json
import sys
try:
directory = sys.argv[1]
except IndexError:
directory = "."
print(json.dumps(path_hierarchy(directory), indent=2, sort_keys=True))
我已经尝试了所有我能想到的在 url 字符串的开头插入 ../audio/ 的方法,但不断出现错误。谁能告诉我需要的语法吗?
解决方案
在第 9 行,为了预先添加,您必须调用 os.joi 中的 os.path,如下例所示:
'url': os.path.join("..","audio",os.path.basename(path))
它会给你:
"url": "..\\audio\\path"
另一个建议是更改这部分:
hierarchy['children'] = [
path_hierarchy(os.path.join(path, contents))
for contents in os.listdir(path)
]
为了这:
hierarchy['children'] = [
path_hierarchy(os.path.join(path, contents))
for contents in os.listdir(path)
if os.path.isdir(os.path.join(path, contents))
]
如果您打算只使用目录,则此“if”将允许循环忽略文件。
推荐阅读
- postgresql - 如何将字符串转换为日期 PostgeSQL
- ios - 是否可以使用 Apple Watch 解锁我的应用程序?
- iframe - 将 I-frame Power BI 仪表板链接嵌入到 Web.config 文件中
- apache-spark - 在 Spark Sql 中透视多个列和行
- android - 使用 Andorid 的两个 RecyclerViews 创建视图
- excel - 在 Excel 中实现一个简单的调度算法
- python - xml.etree.ElementTree 将父标签附加到子标签
- r - 错误代码:必须以相同的顺序具有相同的级别
- three.js - 旋转相机相对于空间的运动
- django - Django 无法找到静态文件