使用PureData的shell对象执行curl命令未保存图片求助
在PureData中用shell执行curl无法保存图片的问题解决
问题情况
我尝试在PureData中使用shell对象执行以下curl命令获取图片:
curl -O -k 'https://cdn.onemars.net/sites/perfect-fit_uk_Z61CM_JAs8/image/editor/ben-griffiths-vqeoowvzzys-unsplash_1686909408862.jpg'
该命令在终端中可正常运行并保存图片,但在PureData中执行等效代码时,虽返回执行完成标识1、提示已获取图片,却未在预期的本地位置保存图片:
#N canvas 0 23 821 330 12; #X obj 243 123 shell; #X obj 275 163 print DONE; #X obj 225 183 print; #X msg 241 38 curl -O -k 'https://cdn.onemars.net/sites/perfect-fit_uk_Z61CM_JAs8/image/editor/ben-griffiths-vqeoowvzzys-unsplash_1686909408862.jpg' ; #X connect 0 0 2 0; #X connect 0 1 1 0; #X connect 3 0 0 0;
核心原因
- 工作目录不匹配:PureData的
shell对象执行命令时,默认工作目录不是你打开pd文件的目录,也不是终端当前目录,而是PureData的安装目录或系统临时目录——图片其实已经下载了,只是你没在正确位置找到。 - 少数情况下,
msg对象里的单引号可能未被正确解析,导致curl的URL参数异常,但从反馈的“提示已获取”来看,主要问题还是目录。
解决方法
1. 直接指定图片保存路径
修改msg对象的命令,用-o参数明确指定保存位置,比如:
curl -k -o "/Users/你的用户名/Desktop/downloaded_img.jpg" 'https://cdn.onemars.net/sites/perfect-fit_uk_Z61CM_JAs8/image/editor/ben-griffiths-vqeoowvzzys-unsplash_1686909408862.jpg'
替换路径为你实际需要的文件夹,这样不管shell的工作目录在哪,图片都会存到指定位置。
2. 先切换目录再执行curl
用cd命令切换到目标目录,再执行curl,比如:
cd "/Users/你的用户名/Documents/Pd_Projects" && curl -O -k 'https://cdn.onemars.net/sites/perfect-fit_uk_Z61CM_JAs8/image/editor/ben-griffiths-vqeoowvzzys-unsplash_1686909408862.jpg'
这样curl会把图片保存到你指定的Pd_Projects目录下。
3. 查看默认工作目录
在msg对象中执行pwd命令,通过print对象输出当前工作目录,就能找到图片实际下载的位置:
#X msg 241 38 pwd;
运行后查看PureData的打印信息,就能定位到默认目录,去那里找下载的图片。
内容的提问来源于stack exchange,提问作者garrettlynchirl
相关产品推荐
相关产品推荐

