首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当直接调用时,hdiutil创建DMG,但不是从os.system()中调用。

当直接调用时,hdiutil创建DMG,但不是从os.system()中调用。
EN

Stack Overflow用户
提问于 2017-09-25 06:33:35
回答 1查看 417关注 0票数 0

编辑:--我发现这个问题不是这个代码的问题,它实际上是一个简单的问题,其作用方式与这里显示的类似。

我正在制作一个程序,对一个文件执行不同的压缩阶段。这部分代码压缩到ZIP,然后是DMG,然后将文件重命名为一个扩展名。它在temp/目录中这样做。

我的代码:

代码语言:javascript
复制
from os import system as sysCmd
from os import rename, remove
import zipfile

...

# STEP 3 - create a zipfile
zip = zipfile.ZipFile(workDir + filename + ".zip", mode='w')
zip.write(workDir + filename + ".datei")
zip.close()

# STEP 4 - Compress to a DMG - THE PROBLEM IS HERE
sysCmd("hdiutil create -fs MS-DOS " + workDir + filename + ".dmg -srcfolder " + workDir + filename + ".zip")  # there is no more pythonesque way :(

# STEP 5  - Rename to  *.datei
remove(workDir + filename + ".datei")  # remove pre-existing datei
rename(workDir + filename + ".dmg", workDir + filename + ".datei")

问题是:

它创建一个zip temp/myFile.zip,而不是从zip temp/myFile.dmg创建一个DMG。

当然,我从os.rename获得了错误,因为文件不存在:

代码语言:javascript
复制
created: /path/to/files/temp/README.dmg
Traceback (most recent call last):
  File "datei.py", line 59, in <module>
    rename(workDir + filename + ".dmg", workDir + filename + ".datei")
FileNotFoundError: [Errno 2] No such file or directory: '/path/to/files/temp/README.dmg' -> '/path/to/files/temp/README.datei'

我试过的是:

  • 在命令行中自己运行hidutil。成功了!这让我想知道问题是否与os.system()有关。
  • 运行print(os.system("ls -al " + workDir))whatever.dmg --这告诉我有一个文件,尽管与其他任何检查都否认它。另外,它告诉我重命名成功了,尽管它在其他地方也没有出现。

我们会非常感谢你的帮助,谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-09-26 19:56:47

您可能对文件的创建位置、文件的名称等等有一些混淆。例如,如果您的路径有空格,命令行将被错误地解释‘,因为您不对shell进行任何引用或转义。

在Python中使用外部命令的一个可靠方法是使用 module并自己构造argv,因为您通常不需要shell干扰。始终检查程序的退出代码。

代码语言:javascript
复制
import subprocess
subprocess.check_call(("hdiutil","create",
        "-fs","MS-DOS",
        os.path.join(workDir, filename + ".dmg"),
        "-srcfolder", os.path.join(workDir, filename + ".zip")))

assert os.path.isfile(os.path.join(workDir, filename + ".dmg"))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46398922

复制
相关文章

相似问题

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