将 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 = True
对 a lot of reasons that are documented in the Python docs
来说是个坏主意
我正在制作一个脚本来拍摄照片并将它们写入文件夹 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 = True
对 a lot of reasons that are documented in the Python docs