我是 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/