编辑:我发现问题不在于这段代码,它实际上是稍后的一个简单问题,其行为方式与此处显示的类似。
我正在制作一个对文件执行不同压缩阶段的程序。这部分代码压缩为 ZIP,然后是 DMG,然后将文件重命名为一个扩展名。它在temp/
目录中执行此操作。
我的代码:
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 创建一个 ziptemp/myFile.zip
但不是 DMG temp/myFile.dmg
。
我当然会收到错误,os.rename
因为该文件不存在:
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
,即使检查其他任何东西都拒绝它。此外,它告诉我重命名成功,即使它也没有出现在其他任何地方。
非常感谢您的帮助,谢谢。