替换python文件组中的字符串
我有一个在文件夹中执行大量python文件的项目。它们都有一行PATH=“defaultstring”。我想让它更具动态性,即将所有python文件中的“defaultstring”替换为运行时提供的一些“otherstring”。如果运行时未提供字符串,则“defaultstring”将是默认值 我正在使用gradle构建项目。我可以做的一件事是在执行这些文件组之前执行一些python脚本,比如“main.py”。“main.py”可以迭代到所有文件,打开它们,并将PATH=“defaultstring”替换为“otherstring” 是否可以在每次运行时不更改文件夹中的所有文件的情况下执行此操作?这是因为如果我在第一次运行时将“defaultstring”更改为“otherstring”,在第二次运行时,假设我不提供任何运行时输入,那么默认情况下将执行PATH=“otherstring”,但我要保留的默认值是“defaultstring”。在这种情况下,我可以将“otherstring”更改为“defaultstring”,但我想使用某种方法,这种方法不会遍历所有文件并更改这些行替换python文件组中的字符串,python,gradle,Python,Gradle,我有一个在文件夹中执行大量python文件的项目。它们都有一行PATH=“defaultstring”。我想让它更具动态性,即将所有python文件中的“defaultstring”替换为运行时提供的一些“otherstring”。如果运行时未提供字符串,则“defaultstring”将是默认值 我正在使用gradle构建项目。我可以做的一件事是在执行这些文件组之前执行一些python脚本,比如“main.py”。“main.py”可以迭代到所有文件,打开它们,并将PATH=“defaults
我们可以使用fixture injection(我对fixture injection不太了解,因此任何其他技术也会很有帮助)来实现这一点吗?假设您的文件具有某种独特且可识别的命名模式,您可以执行以下操作:
PATH='original/PATH'
def修改路径(新路径):
全局路径
路径=新路径
一些_file1.py
导入全局变量
def get_path():
返回全局路径
一些_file2.py
import globals
def get_path():
return globals.PATH
main.py
导入全局变量
如有需要:
全局。修改路径(“新建/路径”)
C Hecht谢谢你的回答,你能给出示例代码来说明这一点吗?我不知道这与在所有其他python文件中导入文件并在单个文件中进行更改有什么不同。要实现这一点,我需要从main.py本身执行我的其他python文件吗?我认为是这样的,但实际上我不能这样做,因为我正在运行shell脚本来构建我的项目,并且还有很多其他文件可以随时调用运行任何其他文件。我认为您需要清楚地了解您试图实现的目标。据我所知,您试图不修改实际文件,而只是在运行时修改一个变量。为此,您需要知道您的程序进入何处。将编辑一段示例代码,说明第二个选项,因为它更干净。对于完整的代码示例,请包括您自己的示例代码。因此,假设我有test.py和one.py文件。在one.py中,我声明x=5并打印它。现在根据你的答案,我应该在test.py中导入一个.py,我可以改变x=10的值。然后我可以执行one.py,它将与x=10一起工作。请看我对我的答案的编辑,并检查这是否足以让您理解。虽然我已经接受了答案,但如果其他人有一些想法可以分享,这将对所有人都有帮助。我可以投你一票。