python - 如何使用 Python 将自定义 linux stdout 粘贴到 JSON 中?

标签 python json linux unix

我是 Python 的初学者,我正在尝试编写一个脚本,该脚本将接收 unix stdout 文件并将其转换为 JSON 格式文件。文件的每一行格式如下:

inodeNumber fileSize ownerName pathToFile

路径可以包含空格和反斜杠字符,例如:

236342512 200 George usr/temp/a\ path/random1.txt

现在我的问题是,如果我使用 split("") 方法并将其存储到字典中,文件路径中的空格将为路径创建超过 1 个键值。我已经考虑过对其进行编码,但它仍然无法解决路径中的空间问题,因为该空间也会被编码。

我尝试获取的JSON格式如下:

{
   "files": [{
       "inodeNumber": "236342512",
       "fileSize": "200",
       "ownerName": "George",
       "pathToFile": "usr/temp/a\ path/random1.txt"
    },
    {...}]
}

此外,将自定义 unix stdout 文件转换为 JSON 以将每个属性存储到 Python 字典中的键值对,然后创建 JSON 对象并将其转储到文件中的最佳解决方案是什么?我将处理非常大的文件(每个超过 1GB!),因此也需要考虑性能。

提前致谢!

最佳答案

我将使用此方法来解析该行,因为它不假设任何有关路径的信息:

s = r'236342512 200 George usr/temp/a\ path/random1.txt'

def parseLine(s):
    sList = s.split(' ')
    D = {}
    D['inodeNumber'] = sList[0]
    D['fileSize'] = sList[1]
    D['ownerName'] = sList[2]
    D['pathToFile'] = ' '.join(sList[3:])
    return D

print(parseLine(s))   

对于你的例子,它给出了这个输出:

{'inodeNumber': '236342512', 'fileSize': '200', 'ownerName': 'George', 'pathToFile': 'usr/temp/a\\ path/random1.txt'}

关于python - 如何使用 Python 将自定义 linux stdout 粘贴到 JSON 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44222352/

相关文章:

python - 使用 Python 进行 Excel

python - 获取列表中的 XML 元素

javascript - 获取第一个 JSON 结果

python - ubuntu 构建时未找到库错误

python - 在 python 中执行 ls 输出魔术

python - scipy.stats 中可用的所有分布是什么样的?

python - matplotlib 忽略缺失数据

javascript - AngularJS - 使用单个 ng-repeat 显示复杂的 JSON 数据

ios - 无法将此 JSON 转换为字符串

linux - 如何在停止时自动启动容器?--AWS