Двоеточие в именах файлов в Python

как мы все знаем, имена файлов в Windows не может содержать двоеточия. Однако я столкнулся с проблемой, которую можно воспроизвести со следующим примером кода:

import os
os.chdir('./temp')
names = ['a', 'b', 'word1: word2', 'c: file', 'd: file']

for name in names:
    with open(name, 'w') as f:
        f.write('foo')

этот скрипт создает три файла в

1 ответов


Windows NTFS поддерживает файл "поток". Вы в основном добавляете данные в файл, вне файла, и не можете нормально просматривать. При создании файла "word1:word2" скрытый поток "word2" присоединяется к "word1". Если вы скопировали файл word1 на другую машину NTFS, данные word2 будут поставляться с вами

иди сюда http://technet.microsoft.com/en-us/sysinternals/bb897440.aspx и загрузите программу streams. Запуск его покажет вам, что word2 является поток, прикрепленный к word1

эта страница также говорит о потоках: http://www.forensicfocus.com/dissecting-ntfs-hidden-streams

чтобы действительно доказать это легко, вы можете использовать блокнот, но вы должны использовать .расширение txt:

 file=open('word1.txt:word2.txt','w')
 file.write('Testing streams')
 file.close()

теперь, используя программу cmd, измените каталоги, в которых вы создали файлы. Введите следующее:

 c:\tmp> notepad word1.txt

вы увидите пустой файл. Теперь попробуйте следующее:

 c:\tmp> notepad word1.txt:word2.txt

вы должны см. текст Testing streams.