替换python文件组中的字符串

2024-09-28 23:02:59 发布

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

我有一个在文件夹中执行大量python文件的项目。它们都有一行PATH=“defaultstring”。我想让它更具动态性,即将所有python文件中的“defaultstring”替换为运行时提供的一些“otherstring”。如果运行时未提供字符串,则“defaultstring”将是默认值

我正在使用gradle构建项目。我可以做的一件事是在执行这些文件组之前执行一些python脚本,比如“main.py”。“main.py”可以迭代到所有文件,打开它们,并将PATH=“defaultstring”替换为“otherstring”

是否可以在每次运行时不更改文件夹中的所有文件的情况下执行此操作?这是因为如果我在第一次运行时将“defaultstring”更改为“otherstring”,在第二次运行时,假设我不提供任何运行时输入,那么默认情况下将执行PATH=“otherstring”,但我要保留的默认值是“defaultstring”。在这种情况下,我可以将“otherstring”更改为“defaultstring”,但我想使用某种方法,这种方法不会遍历所有文件并更改这些行

我们可以使用夹具注射来实现这一点吗(我不太清楚这一点,所以任何其他技术也会有帮助)


Tags: 文件path项目方法字符串py脚本文件夹
1条回答
网友
1楼 · 发布于 2024-09-28 23:02:59

假设您的文件具有某种独特且可识别的命名模式,您可以执行以下操作:

  1. Find all your files using glob or something similar
  2. Import the files dynamically
  3. 使用global关键字更改变量

如果创建执行这些步骤的函数,并将其作为主函数中代码的第一个操作执行,则应能够在运行时全局更改变量路径,而无需与硬盘上存储的文件交互(因此不会更改默认值)

编辑:尽管上述方法有望奏效,但它仍然是一种糟糕的做法。如果您有一个包含所有其他文件都导入的变量的文件,则效果会更好。然后,您只需更改一个变量,其意图比您最初打算更改的版本要清楚得多

Edit2:您可以将项目结构为包含以下具有相应函数或变量的文件。如果所有文件都导入包含路径的公共文件,则此设置允许您在启动脚本时在运行时更改变量路径。在每个文件中更改变量的另一个选项更麻烦,我只会在真正需要时添加该选项

globals.py

PATH = 'original/path'

def modify_path(new_path):
    global PATH
    PATH = new_path

一些_file1.py

import globals
def get_path():
    return globals.PATH

一些_file2.py

import globals
def get_path():
    return globals.PATH

main.py

import globals

if necessary:
    globals.modify_path('new/path')

相关问题 更多 >