我有一个路径(包括目录和文件名).
我需要测试文件名是否有效,例如,如果文件系统允许我创建具有这样名称的文件.
文件名中包含一些unicode字符.
可以安全地假设路径的目录段是有效且可访问的(我试图使问题更加适用,显然我太过分了).
除非必须,否则我非常不想逃避任何事情.
我发布了一些我正在处理的示例字符,但显然它们会被堆栈交换系统自动删除.无论如何,我想保留标准的unicode实体ö,并且只保留文件名中无效的东西.
这是捕获.可能(或可能不)已经是路径目标的文件.我需要保留该文件(如果它存在),如果不存在则不创建文件.
基本上我想检查是否可以写入路径而不实际打开写入路径(以及通常需要的自动文件创建/文件clobbering).
因此:
try:
open(filename, 'w')
except OSError:
# handle error here
Run Code Online (Sandbox Code Playgroud)
是不可接受的,因为它会覆盖我不想触摸的现有文件(如果它在那里),或者如果不存在则创建所述文件.
我知道我能做到:
if not os.access(filePath, os.W_OK):
try:
open(filePath, 'w').close()
os.unlink(filePath)
except OSError:
# handle error here
Run Code Online (Sandbox Code Playgroud)
但那会创建文件filePath,然后我必须这样做os.unlink.
最后,似乎花了6或7行来做一些应该简单os.isvalidpath(filePath)或类似的事情.
顺便说一下,我需要在(至少)Windows和MacOS上运行,所以我想避免特定于平台的东西.
``