Двоеточие в именах файлов в 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
.