从 .py 脚本调用变量到 Batch

Call variables from .py script into Batch

我有一系列 .py 文件,我正在使用 .bat 来自动执行整个过程。在一些 .py 文件中,我调用了另一个 .py 文件中的变量。我这样做是为了让自己在 运行 新进程时只更改一个 .py。我通常使用 .py 文件将 .bat 设置为 运行,但我不明白如何合并 variables.py 文件。

示例:

Python1.py

import os
import somefolder.variables as variables

path = 'C:/pictures/'
file = variables.file

for img in os.listdir(path + variables.file):
    print(img)

Variables.py

file = item1.img

Batch.bat

call "C:/Users/name/anaconda3/Scripts/activate.bat" "C:/Users/name/anaconda3/envs/environment"
call "C:/Users/name/anaconda3/envs/environment/python.exe" "D:/Scripts/python1.py"
...

在 运行ning 之后类似的东西。我收到错误:No module named 'somefolder'。我已经阅读了一些关于使用 echo 命令或使用 set 的其他帖子,但它似乎是在批处理中设置一个变量而不是从另一个 .py 文件调用它。我是批处理文件的新手,所以任何帮助将不胜感激。

将文件内容读入变量:

for /f "delims=" %%x in (version.txt) do set Build=%%x

set /p Build=<version.txt

两者的行为相同,文件中只有一行,对于更多行,for 变体会将最后一行放入变量中,而 set /p 将使用第一行。

使用变量——就像任何其他环境变量一样——毕竟它是一个:

%Build%

所以要检查是否存在:

if exist \fileserver\myapp\releasedocs\%Build%.doc ...

尽管很可能那里不允许使用 UNC 路径。现在无法对此进行测试,但请记住这一点。

正如@Rashid 'Lee' Ibrahim 在上面的评论中提到的那样,最好考虑使用 __intit__.py。虽然为了获取代码 运行,我将 module/.py 文件所在的位置设置为系统路径。

Python1.py 原创

import os
import somefolder.variables as variables

path = 'C:/pictures/'
file = variables.file

for img in os.listdir(path + variables.file):
    print(img)

Python1.py 已编辑

import os
sys.path.append('D:/Scripts/')
import variables

path = 'C:/pictures/'
file = variables.file

for img in os.listdir(path + variables.file):
    print(img)