"FileNotFoundError" 在处理 "FileExistsError" 期间
"FileNotFoundError" During Handling of "FileExistsError"
我正在尝试在 class 构造函数中创建目录,但有可能存在与我要创建的名称相同的目录。所以我正在尝试以下方法。
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
,如下所示:
subprocess.Popen(["rm", "-rf", f"{self.out_abs}"]).wait()
即使文件夹存在,您也可能想继续:
os.makedirs(path, exist_ok=True)
但您可能更愿意在重新创建之前真正删除该文件夹:
shutil.rmtree(path)
我正在尝试在 class 构造函数中创建目录,但有可能存在与我要创建的名称相同的目录。所以我正在尝试以下方法。
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
,如下所示:
subprocess.Popen(["rm", "-rf", f"{self.out_abs}"]).wait()
即使文件夹存在,您也可能想继续:
os.makedirs(path, exist_ok=True)
但您可能更愿意在重新创建之前真正删除该文件夹:
shutil.rmtree(path)