我有文件.sh文件和.json文件,其中有指向特定目录的文件路径,但我应该继续更改文件路径,具体取决于运行python scipt的位置。
例如:我的一个.sh文件的内容是 " cd / home / aswany / BotStudioInstallation / databricks / platform / databricksastro"
我应该通过python代码更改文件路径,其中包含以下路径
" /家庭/ aswany / BotStudioInstallation /"根据数据库的位置不断变化,
我尝试了以下代码:
replaceAll(str(self.currentdirectory)+
"/databricks/platform/devsettings.json",
"/home/holmes/BotStudioInstallation",self.currentdirectory)
和函数replaceAll是:
def replaceAll(self,file,searchExp,replaceExp):
for line in fileinput.input(file, inplace=1):
if searchExp in line:
line = line.replace(searchExp,replaceExp)
sys.stdout.write(line)
但上面的代码只替换了一行
" home/holmes/BotStudioInstallation
"到我登录的当前目录,但是不能确定" home/holmes/BotStudioInstallation
"是唯一可能继续改变的方式,例如" home/aswany/BotStudioInstallation
"," home/dev3/BotStudioInstallation
"等等,我想到了正则表达式。
请帮帮我
答案 0 :(得分:1)
不确定我100%了解你的问题,但也许我可以提供帮助。
正如J.F. Sebastian所指出的,您可以使用相对路径并删除路径的基本部分。使用./databricks/platform/devsettings.json
可能就足够了。这是迄今为止最优雅的解决方案。
如果由于任何原因不是,您可以保留您需要访问的目录,然后在需要时将其附加到基目录。这应该允许您处理基目录中的更改。虽然如果文件将被其他应用程序使用,但这可能不是一种选择。
dir = get_dir_from_json()
dir_with_base = self.currentdirectory + dir
或者,不是一个优雅的解决方案,但如果不使用正则表达式,您可以使用"模式"总是替换。
{
"directory": "<<_replace_me_>>/databricks/platform"
}
然后你知道你总是可以替换&#34;&lt;&lt; _replace_me_&gt;&gt;&#34;与基目录。