将 python 变量传递给 bash

pass python var to bash

我正在制作一个脚本来拍摄照片并将它们写入文件夹 created/named "data&time"

我做这部分是为了创建目录和拍照

pathtoscript = "/home/pi/python-scripts"
current_time = time.localtime()[0:6]
dirfmt = "%4d-%02d-%02d-%02d-%02d-%02d"
dirpath = os.path.join(pathtoscript , dirfmt)
dirname = dirpath % current_time[0:6] #dirname created with date and time
os.mkdir(dirname) #mkdir
pictureName = dirname + "/image%02d.jpg" #path+name of pictures

camera.capture_sequence([pictureName % i for i in range(9)])

然后我想将目录名传递给 bash 脚本 (picturesToServer),该脚本将图片上传到服务器。 我该怎么做?

cmd = '/home/pi/python-scripts/picturesToServer  >/dev/null 2>&1 &'
call ([cmd], shell=True)

也许我可以留在 python 脚本中将图片 scp 到服务器?我有一个带有释义集的 ssh-agent (ssh-add mykey)。

将变量放置在环境中(它将作为 bash 脚本中的常规 bash 变量使用,例如下面示例中的 VAR_NAME)通过替换你的call 与:

import subprocess    
p = subprocess.Popen(cmd, shell=True, env={"VAR_NAME": dirname})

或者通过将 cmd 替换为:

将其作为位置参数传递(它将在脚本的 </code> 中可用) <pre><code>cmd = '/home/pi/python-scripts/picturesToServer >/dev/null 2>&1 "{0}" &'.format(dirname)

作为旁注,请考虑在调用子流程时使用 而不是 使用 shell = True。使用 shell = Truea lot of reasons that are documented in the Python docs

来说是个坏主意