最近跑别人的项目遇到一个这样的问题
OSError: [Errno 22] Invalid argument xxxxxxxxxxxxxxxxxx

一开始以为是没有用管理员的权限运行,导致创建不了日志文件
后来发现是和windows的命名规则冲突了(以下来源官网地址)
命名约定
以下基本规则使应用程序能够创建和处理文件和目录的有效名称,而不考虑文件系统:
-
使用句点将基文件名与目录或文件名称中的扩展名分隔开。
-
使用反斜杠 () 分隔路径的组件。 反斜杠将文件名从路径中除以,将一个目录名与路径中的另一个目录名称分开。 不能在实际文件或目录的名称中使用反斜杠,因为它是将名称分隔成组件的保留字符。
-
根据需要使用反斜杠作为 卷名称的一部分,例如“C:\”在“C:\path\file”或“\server\share\path\file”中为通用命名约定的“\server\share” (UNC) 名称。 有关 UNC 名称的详细信息,请参阅

作者在运行他人项目时,起初以为是权限问题导致无法创建日志文件,后发现是与Windows命名规则冲突。文中介绍了Windows命名约定,包括不能使用的保留字符、保留名称等,将项目中违规字符替换后程序正常运行。
最低0.47元/天 解锁文章
1430





