我想出了怎么做。显然,即使直接从C调用WinAPI,传递常规文件名也会删除句点。为了创建奇怪的文件名,必须使用\\?\前缀(这也会禁用相对路径和斜杠转换)。
\\?\
open('\\\\?\\C:\\whatever\\test.','w')
这是丑陋且不可携带的,但是可以工作。