关于python的os.system的问题

wq8848 2010-12-22 12:53:16
用os.system执行命令行
命令如下: >C:\Program Files\Calibre2\ebook-convert.exe E:\KindleToolkit\kindlereader\kindlereader_modify\data\content.html
其中
C:\Program Files\Calibre2\ebook-convert.exe 为可执行文件路径
E:\KindleToolkit\kindlereader\kindlereader_modify\data\content.html 为参数

情况1
os.system(C:\Program Files\Calibre2\ebook-convert.exe E:\KindleToolkit\kindlereader\kindlereader_modify\data\content.html) 

报错:C:\Program 不是内部命令

情况2
os.system("C:\Program Files\Calibre2\ebook-convert.exe" E:\KindleToolkit\kindlereader\kindlereader_modify\data\content.html) 

正确执行

情况3
os.system("C:\Program Files\Calibre2\ebook-convert.exe") 

正确执行

情况4(诡异)
os.system("C:\Program Files\Calibre2\ebook-convert.exe" "E:\KindleToolkit\kindlereader\kindlereader_modify\data\content.html") 

这样的话,居然又 [color=#0000ff]报错: C:\Program 不是内部命令[/color]

情况5
os.system(C:\Progra~1\Calibre2\ebook-convert.exe "E:\KindleToolkit\kindlereader\kindlereader_modify\data\content.html") 

正确执行
对于情况4,必须该路径为Progra~1才行

[color=#000000]情况6[/color]
直接在cmd中 执行"C:\Program Files\Calibre2\ebook-convert.exe" "E:\KindleToolkit\kindlereader\kindlereader_modify\data\content.html"没有问题
也就说如果 执行程序路径加了引号,参数也加引号,第一个引号就等于没加...[s:78]

现在情况5 虽然能用,但改成"Progra~1"也太不舒服了。
如果用情况2的方法 如果后面的参数路径中也有 空格,那么就不行了。
...全文
812 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
iambic 2010-12-23
  • 打赏
  • 举报
回复
谁让你用os.system的。一个命令本质上是一个数组,而不是一个字符串。非要用字符串表示整个命令,只能是自找麻烦。
_skyfish 2010-12-23
  • 打赏
  • 举报
回复
C:\Program Files\Calibre2\ebook-convert.exe E:\KindleToolkit\kindlereader中的‘\'换成'\\'试试,单斜杠是转义字符的意思
wq8848 2010-12-22
  • 打赏
  • 举报
回复
用os.system执行命令行
命令如下:
>C:\Program Files\Calibre2\ebook-convert.exe E:\KindleToolkit\kindlereader\kindlereader_modify\data\content.html 

其中
C:\Program Files\Calibre2\ebook-convert.exe 为可执行文件路径
E:\KindleToolkit\kindlereader\kindlereader_modify\data\content.html 为参数

情况1
os.system(C:\Program Files\Calibre2\ebook-convert.exe E:\KindleToolkit\kindlereader\kindlereader_modify\data\content.html) 

报错:C:\Program 不是内部命令

情况2
os.system("C:\Program Files\Calibre2\ebook-convert.exe" E:\KindleToolkit\kindlereader\kindlereader_modify\data\content.html) 

正确执行

情况3
os.system("C:\Program Files\Calibre2\ebook-convert.exe") 

正确执行

情况4(诡异)
os.system("C:\Program Files\Calibre2\ebook-convert.exe" "E:\KindleToolkit\kindlereader\kindlereader_modify\data\content.html") 

这样的话,居然又 报错: C:\Program 不是内部命令

情况5
os.system(C:\Progra~1\Calibre2\ebook-convert.exe "E:\KindleToolkit\kindlereader\kindlereader_modify\data\content.html") 

正确执行
对于情况4,必须该路径为Progra~1才行

情况6
直接在cmd中 执行
>"C:\Program Files\Calibre2\ebook-convert.exe" "E:\KindleToolkit\kindlereader\kindlereader_modify\data\content.html"

没有问题
也就说如果 执行程序路径加了引号,参数也加引号,第一个引号就等于没加...

现在情况5 虽然能用,但改成"Progra~1"也太不舒服了。
如果用情况2的方法 如果后面的参数路径中也有 空格,那么就不行了。
or5ange 2010-12-22
  • 打赏
  • 举报
回复
很难懂哦~~
  • 打赏
  • 举报
回复
楼上说的没错
要在外面再套一层引号
wq8848 2010-12-22
  • 打赏
  • 举报
回复
解决问题
再加一对引号
os.system(""C:\Progra~1\Calibre2\ebook-convert.exe" "E:\KindleToolkit\kindlereader\kindlereader_modify\data\content.html"")
就OK

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧