我正在使用一个名为pydub
的基于ffmpeg的模块来编辑音频文件。我正在尝试使用模块tempfile
,但由于某种原因,我无法关闭文件(它们没有被删除)。使用上下文管理器时,它抛出permissionerr
。
我所尝试的:
这段代码按照预期的方式工作,但是它没有删除tempfile,不会抛出任何错误。
temp1, temp2 = tempfile.NamedTemporaryFile(dir='data/temp', delete=False), None
# save something to temp1
seg = AudioSegment.from_file_using_temporary_files(temp1)
if options['overlay']:
# create new seg
if overlay_seg:
temp2 = tempfile.NamedTemporaryFile(dir='data/temp', delete=False)
# save something to temp2
overlay_seg = AudioSegment.from_file_using_temporary_files(temp2)
seg = seg.overlay(overlay_seg)
# edit the audio more here..
final = 'data//temp//edited.mp3'
seg.export(final, bitrate=options['bitrate'], format='mp3')
await ctx.send(file=discord.File(final)) # sends the file to a Discord chat
temp1.close()
if temp2:
temp2.close()
这将创建第一个临时文件,然后抛出一个错误:
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
File "<myfile>", line 153, in editaudio
await attachment.save(temp1.name)
File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\message.py", line 155, in save
with open(fp, 'wb') as f:
PermissionError: [Errno 13] Permission denied: '<base>data\\temp\\tmpnf2r68qe'
with tempfile.NamedTemporaryFile(dir='data/temp') as temp1:
await attachment.save(temp1.name)
seg = AudioSegment.from_file_using_temporary_files(temp1)
if options['overlay']:
# create new seg
if overlay_seg:
with tempfile.NamedTemporaryFile(dir='data/temp') as temp2:
# save something to temp2
overlay_seg = AudioSegment.from_file_using_temporary_files(temp2)
seg = seg.overlay(overlay_seg)
# edit the audio more here..
final = 'data//temp//edited.mp3'
seg.export(final, bitrate=options['bitrate'], format='mp3')
await ctx.send(file=discord.File(final)) # sends the file to a Discord chat
我不确定我在这里错过了什么
如果您使用delete=false
选项创建了tempfiles,那么您的tempfiles不会被删除。这是不言自明的,但也在文件中提到。
第二种方法很难调试,因为您没有提供一个最小的可复制示例。
我正在网络上制作一个无缝的CSS模式。我知道这完全是无稽之谈,一点也不实际。但这只是为了好玩。 我已经创建了我的第一个瓷砖。现在我在想一个方法重复它来填充整个背景。 我能仅仅使用HTML和CSS就完成这个壮举吗?或者我必须使用javascript来完成此操作? - 下面是我使用javascript的步骤,纠正我或建议更好的方法: 计算当前浏览器的宽度和高度。 单个平铺是(150x150),我只需要
tempfile 模块专门用于创建临时文件和临时目录,它既可以在 UNIX 平台上运行良好,也可以在 Windows 平台上运行良好。 tempfile 模块中常用的函数,如表 1 所示。 表 1 tempfile 模块常用函数及功能 tempfile 模块函数 功能描述 tempfile.TemporaryFile(mode='w+b', buffering=None, encoding=Non
问题内容: 有客观的更好的方法在bash脚本中创建临时文件吗? 我通常只要给他们起名就可以使用它们,例如tempfile-123,因为脚本结束后它将被删除。除了覆盖当前文件夹中可能的tempfile-123之外,这样做是否有其他缺点?还是以更谨慎的方式创建临时文件有什么好处? 问题答案: 该手册页解释了它相当好: 传统上,许多shell脚本使用pid作为后缀来命名程序名称,并将其用作临时文件名。这
4.4.1 模块的创建和使用 在 Python 语言中,模块对应于 Python 程序文件,即每个 Python 程序文件就是一个模块。 模块是 Python 程序的最高层结构单元,用于组织程序的代码和数据,以便能被同一程 序的其他模块甚至被其他程序重用。一个模块可以导入其他模块,导入后就可以使用其他模 块中定义的函数、类等对象。 用模块作为程序的结构单元,至少有三个作用: (1)代码重用:将代码
问题 你需要在程序执行时创建一个临时文件或目录,并希望使用完之后可以自动销毁掉。 解决方案 tempfile 模块中有很多的函数可以完成这任务。 为了创建一个匿名的临时文件,可以使用 tempfile.TemporaryFile : from tempfile import TemporaryFile with TemporaryFile('w+t') as f: # Read/writ
问题内容: 无论如何,我可以写到tempfile并将其包含在命令中,然后关闭/删除它。我想执行命令,例如:some_command / tmp / some-temp-file。 提前谢谢了。 问题答案: 如果需要带有名称的临时文件,则必须使用该功能。然后就可以使用了。有关详细信息,请阅读 http://docs.python.org/library/tempfile.html。