ruby – 如何等待系统命令结束
发布时间:2020-12-16 21:18:29 所属栏目:百科 来源:网络整理
导读:我正在使用 Ruby中的系统命令转换XLS 2 CSV文件. 在转换之后,我正在处理CSV文件,但是当程序想要处理文件时,转换仍在运行,因此那时它们不存在. 有人能告诉我是否可以让Ruby等待系统命令完成所需的时间? 现在我正在使用: sleep 20 但如果它需要更长的时间,那
我正在使用
Ruby中的系统命令转换XLS 2 CSV文件.
在转换之后,我正在处理CSV文件,但是当程序想要处理文件时,转换仍在运行,因此那时它们不存在. 有人能告诉我是否可以让Ruby等待系统命令完成所需的时间? 现在我正在使用: sleep 20 但如果它需要更长的时间,那当然是不对的. 我具体做的是: #Call on the program to convert xls command = "C:/Development/Tools/xls2csv/xls2csv.exe C:/TDLINK/file1.xls" system(command) do_stuff def do_stuff #This is where i use file1.csv,however,it isn't here yet end 解决方法
Ruby的系统(“…”)方法是同步的;即它等待它调用的命令返回退出代码,如果命令以0状态退出,则系统返回true,如果退出非0状态则返回false. Ruby的反引号返回了命令的输出:
a = `ls` 将a设置为一个字符串,其中包含当前工作目录的列表. 因此,似乎xls2csv.exe在完成它应该执行的操作之前返回退出代码.也许这是一个Windows问题.所以看起来你必须循环直到文件存在: until File.exist?("file1.csv") sleep 1 end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读