gpt4 book ai didi

python - 我可以用 Python 替换 JSON 键中的部分字符串吗?

转载 作者:太空宇宙 更新时间:2023-11-03 13:36:59 26 4
gpt4 key购买 nike

这是我的第一个问题,我是 python 的新手,正在尝试弄清楚一些事情来建立一个自动 3D 模型处理链,该链依赖于存储在 JSON 文件中的数据从一个服务器移动到另一个服务器。

问题是我需要存储正在处理的文件的绝对路径,但这些绝对路径应该在第一次处理时在原始 JSON 文件中修改。

基本上 JSON 文件是这样的:

{
"normaldir": "D:\\Outgoing\\1621_1\\",
"projectdir": "D:\\Outgoing\\1622_2\\"
}

我想将文件路径重命名为

    {
"normaldir": "X:\\Incoming\\1621_1\\",
"projectdir": "X:\\Incoming\\1622_2\\",
}

我一直试图做的是使用这段代码替换路径的第一部分,但它不起作用:

def processscan(scanfile):
configfile= MonitorDirectory + scanfile
with open(configfile, 'r+') as file:
content = file.read()
file.seek(0)
content.replace("D:\\Outgoing\\", "X:\\Incoming\\")
file.write(content)

但是这根本不起作用,所以我尝试正确解释 JSON 文件并替换 here 中的关键代码:

def processscan(scanfile):
configfile= MonitorDirectory + scanfile
with open(configfile, 'r+') as settingsData:
settings = json.load(settingsData)
settings['normaldir'] = 'X:\\Incoming\\1621_1\\'
settings['projectdir'] = 'X:\\Incoming\\1622_2\\'
settingsData.seek(0) # rewind to beginning of file
settingsData.write(json.dumps(settings,indent=2,sort_keys=True)) #write the updated version
settingsData.truncate() #truncate the remainder of the data in the file

这非常有效,但是我要替换整个路径,因此它不会真正适用于我需要处理的每个 JSON 文件。我真正想做的是获取与文件路径相对应的 JSON key ,保留最后 8 个字符并用新字符串替换补丁的其余部分,但我无法弄清楚如何使用 json in python,据我所知我无法编辑 key 的一部分。有人对此有解决方法吗?

谢谢!

最佳答案

您的替换逻辑失败,因为您需要将内容重新分配给新字符串,str.replace 不是就地操作,它会创建一个新字符串:

 content =  content.replace("D:\\Outgoing\\", "X:\\Incoming\\")

使用 json 方法也可以使用当前值进行替换:

settings['normaldir'] =  settings['normaldir'].replace("D:\\Outgoing\\", "X:\\Incoming\\")

如果您真的只想保留最后 8 个字符并在前面添加一个字符串,您还需要在写入之前使用 truncate() 或者使用 w 重新打开文件并转储/写入新值:

settings['normaldir'] =  "X:\\Incoming\\" + settings['normaldir'][-8:] 

关于python - 我可以用 Python 替换 JSON 键中的部分字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38232051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com