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

时间:2016-04-22 05:28:54

标签: python linux

我有文件.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"等等,我想到了正则表达式。

请帮帮我

1 个答案:

答案 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;与基目录。