如何确保 cygwin 调用已完成?
How can I make sure that a cygwin call is finished?
我目前正在从 Python 调用 "convert"-cygwin 方法。它应该将 pdf 转换为 png 文件。但是,如果我调用转换方法并直接尝试访问生成的 png,则会出现问题,因为显然 png 尚未完全实现。
我的代码:
import os
import cv2
cmd = 'set PATH="C:/cygwin64/bin";"%PATH%" && cd '+os.path.dirname(PDFPath)+' && run convert -density 300 '+os.path.basename(PDFPath)+' -quality 100 -alpha off '+ img_path
os.system(cmd)
img = cv2.imread(img_path,0)
如果我这样做,实际上会创建 png,但 img 是 None,因为显然在调用 imread() 时图像不存在。
我也试过
while not os.path.exists(img_path):
time.sleep(10)
然后尝试 imread(),它起作用了。有没有办法在调用 img_path 之前确保该文件确实存在?
我不想继续使用 time.sleep() 因为有一个细微的变化,在睡眠结束时 png 仍然没有从内存中完全加载。
您应该能够通过 run
(例如 run convert -wait -density ...
)将 -wait
作为第一个参数添加到您 运行 的命令中以获得 run
等待命令完成。有关 run
命令的更多信息,请参见 cygwin 中的 man run
。
我目前正在从 Python 调用 "convert"-cygwin 方法。它应该将 pdf 转换为 png 文件。但是,如果我调用转换方法并直接尝试访问生成的 png,则会出现问题,因为显然 png 尚未完全实现。
我的代码:
import os
import cv2
cmd = 'set PATH="C:/cygwin64/bin";"%PATH%" && cd '+os.path.dirname(PDFPath)+' && run convert -density 300 '+os.path.basename(PDFPath)+' -quality 100 -alpha off '+ img_path
os.system(cmd)
img = cv2.imread(img_path,0)
如果我这样做,实际上会创建 png,但 img 是 None,因为显然在调用 imread() 时图像不存在。
我也试过
while not os.path.exists(img_path):
time.sleep(10)
然后尝试 imread(),它起作用了。有没有办法在调用 img_path 之前确保该文件确实存在?
我不想继续使用 time.sleep() 因为有一个细微的变化,在睡眠结束时 png 仍然没有从内存中完全加载。
您应该能够通过 run
(例如 run convert -wait -density ...
)将 -wait
作为第一个参数添加到您 运行 的命令中以获得 run
等待命令完成。有关 run
命令的更多信息,请参见 cygwin 中的 man run
。