我正在编写一个python程序,现在我正在处理异常情况。
while True:
try:
os.makedirs("{}\\test".format(dest))
except PermissionError:
print("Upewnij sie ze masz dostep do podanego katalogu")
print("Sprobuj ponownie podac miejsce docelowe: ", end='')
dest = input()
continue
break
我有这个,但是以后我将需要删除我创建的这个文件夹。 有人可以告诉我如何做得更容易吗?
答案 0 :(得分:2)
我认为您想要的是os.access
。
os.access(路径,模式,*,dir_fd =无,有效ID = False,follow_symlinks =真实)
使用真实的uid / gid测试对路径的访问。请注意,大多数操作将使用有效的uid / gid,因此可以在suid / sgid环境中使用此例程来测试调用用户是否具有对路径的指定访问权限。 mode应该为F_OK以测试路径是否存在,或者可以为R_OK,W_OK和X_OK中的一个或多个以包含或测试权限。如果允许访问,则返回True;否则,则返回False。
例如:
os.access("/path", os.R_OK)
该模式包含:
os.F_OK # existence
os.R_OK # readability
os.W_OK # writability
os.X_OK # executability
答案 1 :(得分:2)
不要。
几乎永远不值得验证您是否有权执行程序所需的操作。一方面,权限不是失败的唯一可能原因。例如,删除也可能由于另一个程序的文件锁定而失败。除非您有非常的充分理由,否则只需编写代码以 try 进行操作,然后在失败时中止操作,就会更高效,更可靠: >
import shutil
try:
shutil.rmtree(path_to_remove) # Recursively deletes directory and files inside it
except Exception as ex:
print('Failed to delete directory, manual clean up may be required: {}'.format(path_to_remove))
sys.exit(1)
os.path.join
串联文件路径:os.makedirs(os.path.join(dest, test))
。这将为操作系统使用适当的目录分隔符。您确定要查找tempfile
库吗?它允许您向操作系统的标准临时位置吐出唯一目录:
import tempfile
with tempfile.TemporaryDirectory() as tmpdir:
some_function_that_creates_several_files(tmpdir)
for f in os.walk(tmpdir):
# do something with each file
# tmpdir automatically deleted when context manager exits
# Or if you really only need the file
with tempfile.TemporaryFile() as tmpfile:
tmpfile.write('my data')
some_function_that_needs_a_file(tmpfile)
# tmpfile automatically deleted when context manager exits