我试图在类构造函数中创建一个目录,但有可能存在与我要创建的目录同名的目录。所以我尝试下面的方法
class SubVideoExtractor:
def __init__(self, out_name=str()):
self.out_abs = os.getcwd() + "/output/" + out_name
try:
os.mkdir(self.out_abs)
except FileExistsError:
subprocess.Popen(f"rm -rf {self.out_abs}").wait()
os.mkdir(self.out_abs)
但当目录已经存在时,我在处理FileExistsError
时遇到了FileNotFound
错误
错误看起来如何:
Traceback (most recent call last):
File "/home/lapestand/DEV/projects/SubVideoExtractor/SubVideoExtractor.py", line 22, in __init__
os.mkdir(self.out_abs)
FileExistsError: [Errno 17] File exists: '/home/lapestand/DEV/projects/SubVideoExtractor/output/16035609841603553594'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "main.py", line 95, in <module>
extractor = SubVideoExtractor(length=VIDEO_LENGTH, _format=VIDEO_FORMAT,
File "/home/lapestand/DEV/projects/SubVideoExtractor/SubVideoExtractor.py", line 24, in __init__
subprocess.Popen(f"rm -rf {self.out_abs}").wait()
File "/usr/lib/python3.8/subprocess.py", line 854, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.8/subprocess.py", line 1702, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'rm -rf /home/lapestand/DEV/projects/SubVideoExtractor/output/16035609841603553594'
为什么会发生这种情况以及如何解决
即使文件夹存在,您也可能希望继续:
但您可能更愿意在重新创建文件夹之前删除它:
还有其他方法可以在不捕获异常的情况下执行您正在尝试的操作。也就是说,在浏览文档之后,您应该将一个数组与命令一起传递给
Popen
,如下所示:相关问题 更多 >
编程相关推荐