pathlib PurePosixPath

Chris Angelico rosuav at gmail.com
Tue Oct 10 05:28:36 EDT 2017


On Tue, Oct 10, 2017 at 8:22 PM, Tim Golden <mail at timgolden.me.uk> wrote:
> On 2017-10-10 08:29, Chris Angelico wrote:
>>
>> On Tue, Oct 10, 2017 at 6:21 PM, Sayth Renshaw <flebber.crue at gmail.com>
>> wrote:
>>>
>>> Hi
>>>
>>> How do I create a valid file name and directory with pathlib?
>>>
>>> When I create it using PurePosixPath I end up with an OSError due to an
>>> obvously invlaid path being created.
>>
>>
>> You're on Windows. The rules for POSIX paths don't apply to your file
>> system, and...
>>
>>> OSError: [Errno 22] Invalid argument:
>>> 'C:\\Users\\Sayth\\Projects\\results/Warwick Farm2017-09-06T00:00:00.json'
>>
>>
>> ... the colon is invalid on Windows file systems. You'll have to
>> replace those with something else.
>
>
> I haven't followed closely, so this may well not be an issue here, but the
> colon is valid on a Windows file system; it introduces an alternate data
> stream:
>
> https://msdn.microsoft.com/en-us/library/windows/desktop/aa364404(v=vs.85).aspx
>
> So this is perfectly valid on Windows:
>
> with open("temp.txt:abc", "w") as f:
>     f.write("abc")

Have you tested that? My understanding of the document you linked to
is that the colon still has special meaning, and thus you can't use it
in arbitrary file names. (Now, if the question were "can I ever see a
colon in a file name", then you'd be correct to use this as proof that
you can; but trying to use a file name such as the OP's is not thus
proven.)

And no, I haven't tested my theory on this either. Any Windows guinea
pigs want to give this a try?

ChrisA



More information about the Python-list mailing list