К
Пета задача
За
fs.remove('/')
ми се иска да кажа kernel panic :D Приемете, че потребителя трябва да е достатъчно умен, за да не прави такива опити.Монтирането на друга файлова система не изисква ресурс, отвъд единия байт за директорията, в която ще бъде монтирана. Самата монтирана файлова система си има собствени ресурси, независими от тези на системата, в която бива монтирана.
Когато изтриваме дадена директория, трябва ли да изтриваме и нейните поддиректории?Ако някоя от тях не е празна и за нея ли важи force?
@Eвгени, щом двете файлови системи имат независими ресурси, предполагам, че ако имаме файлова система fs2 монтирана към файлова система fs1, на да кажем следния път '/alabala/fs2', то НЕ може да правим меки и твърди връзки между обекти от fs1 и fs2 т.е. например израза link('/some_file','/alabala/fs2/other_file', symbolic=False) трябва да ни хвърля грешка. Правилно ли разбирам?
@Станислав, когато изтриеш директорията, например, dir и се опиташ да достъпиш нещо от нея трябва да напишеш '/.../dir/...' т.е. трябва да минеш през нея, но тогава get_node ще ти даде NodeDoesNotExistError т.е. за файловата ти система (и за меките и твърдите връзки) всичко в dir и нататък би трябвало да е умряло. Понеже ми се струва, че искаш да триеш съдържанието на dir покомпонентно, то ще отбележа, че за да изтриеш папката от гледна точка на файловата ти система е достатъчно да я махнеш от nodes и directories на предхождащата я папка. Ако искаш да я махнеш въобще от паметта на компютъра трябва да направиш така, че нищо да не сочи към нея (reference count-a да стане 0 и garbage collector- а ще я махне). Ако пък искаш съвсем всичко в dir и нататък съвсем да го премахнеш от компютъра тогава трябва да се подсигуриш, че нищо не сочи към някой от въпросните обекти (т.е. да махнеш и меките връзки) или пък ако нещо1 сочи към нещозаизтриване от въпросните обекти, то нищо не сочи към нещо1, и тогава garbage collectora ще ги ликвидира. (Е, това е така ако съм разбрал нещата, крайно време е някой да ме научи ако греша :P)
Ако във файловата система остават например 2 байта и на даден файл извикаме метода append() с низ по-голям от два символа, каква трябва да бъде реакцията на програмата?
Друг въпрос. Могат ли да се правят връзки от една файлова система към друга, ако втората е монтирана?
Здравейте! Съжалявам за неуместният въпрос, но дали ще бъде възможно да ни бъде изместен крайният срок за 5-тото домашното с 2-3 дни примерно, защото в близката седмица имахме доста контролни, (а и хакатона беше през уикенда) и не ни остана време да отделим нужното внимание на домашното, а то наистина изглежда интересно и си изисква необходимото внимание и време? :)
Когато извикваме remove на директория available_size увеличава ли се големина - сума от големите на абсолютно всички node-ве, които са в някакво ниво йерархията преки/непреки наследници на нея
Относно първият пример:
След като този израз: fs.create('/home') . Създава файл, а не директория.
Не трябва ли fs.create('/home/gosho') да хвърли DestinationNodeDoesNotExistError , а не NotEnoughSpaceError?
@Красимир ако говориш за първия пример. Мисля, че ако не е указан какъв е content или ако не е зададено directory=False винаги създаваме директория.
@Цветан И аз напълно подкрепям тази идея,тъй като е средата на семестъра и всичко е накуп...
Последните 5 примера преди връзки също имат нужда от малко промяна. Следната върши работа:
>>> file_system.create('/home/evstati/suchki.mp3', content='suchki') >>> suchki = file_system.get_node('/home/evstati/suchki.mp3') >>> file_system.create('/home/music', directory=True) >>> file_system.move('/home/evstati/suchki.mp3', '/home/music') >>> suchki.content is file_system.get_node('/home/music/suchki.mp3').content True >>> suchki is file_system.get_node('/home/music/suchki.mp3') True >>> file_system.get_node('/home/evstati/suchki.mp3') path does not exist
Какви ексепшъни се очаква да възбуждаме (ala Kanev style), когато пътя към destination на връзката не съществува? И когато вече съществува друг файл. Съдейки по другите методи ще да са DestinationNodeDoesNotExistError и DestinationNodeExistsError, което изглежда странно, защото 2та метода звучат сякаш покриват всички случаи.
EDIT: Очаква ли се да handle-ваме по някакъв разумен начин рекурсивни символични линкове?
Аз също подкрепям идеята за удължаване на срока на домашното.
И аз подкрепям идеята на Цветан. Предстоят три почивни дни, в които ще можем да обърнем повече внимание на домашното.
@Цветан Коев, мисля, че когато се опитваме да добавим още съдържание към съществуващ файл, то трябва файловата ни система да връща NotEnoughSpaceError.
Въпрос - files, directories и nodes на директориите са методи или атрибути, защото има два одобрени отговора на @Екатерина и на @Илиян, а в същото време в условието са атрибути.
Също подкрепям идеята на @Цветан за срока на домашното :)
Подкрепям идеята на @Цветан, за удължаване срока на домашното :).
Аз също подкрепям идеята на @Цветан за удължаване срока на домашното :)
Аз също подкрепям идеята на @Цветан за удължаване срока на домашното :)
И аз бих искал да се удължи срока на домашното :)
Аз също подкрепям идеята на @Цветан за удължаване на срока на домашното :)
+1 за идеята на @Цветан, покрай ХакФми загубихме половината време :/
Аз също подкрепям идеята на @Цветан за удължаване на срока на домашното
И аз подкрепям идеята на @Цветан за удължаване на срока на домашното.
И аз подкрепям идеята на @Цветан за удължаване на срока на домашното.
И аз бих искала удължаване на срока на домашното.
И аз съм за идеята, срокът за домашното да бъде удължен.
Символните и твърдите връзки заемат по един байт нали?
Аз също подкрепям идеята на @Цветан за удължаване срока на домашното :)
При create(path, directory=False, content='') в какъв ред да хвърляме exception-ите ако (1)path не съществува и (2)няма място и като (1)съществува file с такова име и (2)няма място. Първо да хвърлим (1) или (2)
Трябва да сте влезли в системата, за да може да отговаряте на теми.