首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过popen使用cdrecord不会弹出

通过popen使用cdrecord不会弹出
EN

Stack Overflow用户
提问于 2012-09-26 05:50:47
回答 2查看 303关注 0票数 1

因此,我正在制作一个cd刻录应用程序,我需要弹出驱动器,让用户将磁盘放入其中。这有点复杂,但我遇到的最简单的情况是这样的;我可以通过命令行使用cdrecord来弹出cd托盘,使用以下命令:

代码语言:javascript
复制
cdrecord --eject dev='/dev/sg1'

这应该意味着我可以用subprocess.call做同样的事情,如下所示:

代码语言:javascript
复制
subprocess.call(["cdrecord", "--eject", "dev='/dev/sg1'"])

然而,当我这样做的时候,我得到了这个错误:

代码语言:javascript
复制
wodim: No such file or directory. 
Cannot open SCSI driver!
For possible targets try 'wodim --devices' or 'wodim -scanbus'.
For possible transport specifiers try 'wodim dev=help'.
For IDE/ATAPI devices configuration, see the file README.ATAPI.setup from
the wodim documentation.

托盘打不开。

这与我以前尝试从命令行运行它时得到的错误非常相似,但我通过加载sg内核模块修复了这个错误。

如果我只是运行:

代码语言:javascript
复制
subprocess.call(["cdrecord", "--eject"])

它可以很好地打开托盘。然而,这需要与可能的多个cd托盘一起工作,所以这将不起作用。

我怎样才能让它正确弹出光盘?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-26 05:56:13

试试这个:

代码语言:javascript
复制
subprocess.call(["cdrecord", "--eject", "dev=/dev/sg1"])

shell将负责解释引号,但cdrecord不会。

首先需要使用引号的唯一原因是,dev路径中可能包含空格,这会导致shell将所有内容拆分为单独的参数。例如,如果您键入以下内容:

代码语言:javascript
复制
cdrecord --eject dev=/dev/my silly cd name

cdrecord的参数将是--ejectdev=/dev/mysillycdname。但是如果你这样做:

代码语言:javascript
复制
cdrecord --eject dev='/dev/my silly cd name'

cdrecord的参数将是--ejectdev=/dev/my silly cd name

当您使用subprocess.call时,不需要外壳来拆分参数;您需要显式地传递它们。所以,如果你这样做:

代码语言:javascript
复制
subprocess.call(["cdrecord", "--eject", "dev=/dev/my silly cd name"])

cdrecord的参数将是--ejectdev=/dev/my silly cd name

在某些情况下--例如,因为你一开始就把事情弄得一团糟(例如,你正在读取一个配置文件,这个配置文件应该由你的程序使用或者由外壳程序执行),-you实际上别无选择,只能在外壳中运行。如果发生这种情况,请执行以下操作:

代码语言:javascript
复制
subprocess.call("cdrecord --eject dev='/dev/sg1'", shell=True)

但这通常不是您想要的,在这种情况下也不是您想要的。

票数 2
EN

Stack Overflow用户

发布于 2013-12-10 01:03:49

你使用的不是cdrecord,而是一个叫做"wodim“的but fork,这可能是你出现问题的原因。

我建议您使用最新的原创软件,其网址为:

ftp://ftp.berlios.de/pub/cdrecord/alpha/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12591606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档