Python在linux中提取并修改目录中所有文件的路径

2024-07-05 08:21:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有.sh文件和.json文件,其中提供了指向特定目录的文件路径,但我应该不断更改文件路径,这取决于python scipt的运行位置。你知道吗

例如:我的一个.sh文件的内容是 “cd/home/aswany/botstudio安装/databricks/platform/databricksastro”

我应该通过python代码更改文件路径

“/home/aswany/BotStudioInstallation/”根据数据库的位置不断更改

我尝试了以下代码:

replaceAll(str(self.currentdirectory)+
    "/databricks/platform/devsettings.json",
    "/home/holmes/BotStudioInstallation",self.currentdirectory)

所有的功能是:

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”等一样不断变化,为此我想到了正则表达式。你知道吗

请帮帮我


Tags: 文件代码self路径jsonhomeshline
1条回答
网友
1楼 · 发布于 2024-07-05 08:21:36

我不确定我100%理解你的问题,但也许我能帮上忙。你知道吗

正如J.F. Sebastian所指出的,可以使用相对路径并删除路径的基本部分。使用./databricks/platform/devsettings.json可能就足够了。这是迄今为止最优雅的解决方案。你知道吗

如果由于任何原因没有,您可以保留需要访问的目录,然后在需要时将其附加到基目录。这应该允许您处理基目录中的更改。尽管在这种情况下,这些文件将由您自己的应用程序以外的其他应用程序使用,但这可能不是一个选项。你知道吗

dir = get_dir_from_json()
dir_with_base = self.currentdirectory + dir

或者,这不是一个优雅的解决方案,如果不使用regex,您可以使用“模式”来替换。你知道吗

{
  "directory": "<<_replace_me_>>/databricks/platform"
}

然后,您就知道可以始终用基目录替换“<;<;\u replace\u me>;”。你知道吗

相关问题 更多 >