Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot_c:exp43 [2024/12/01 16:57] – [Программный код эксперимента] labuser30products:laboratory_iot_c:exp43 [2024/12/01 17:48] (текущий) – [Программный код эксперимента] labuser30
Строка 51: Строка 51:
   listDir("/dir/", true);   listDir("/dir/", true);
  
 +  LittleFS.remove("/dir/test2.txt");
 +  LittleFS.rmdir("/dir");
 +  listDir("/", false);
 +  
   LittleFS.rename("/test.txt", "/test_new.txt");   LittleFS.rename("/test.txt", "/test_new.txt");
-  listDir("/", false); 
- 
-  LittleFS.remove("/test_new.txt"); 
   listDir("/", false);   listDir("/", false);
 } }
Строка 61: Строка 62:
 } }
 </file>  </file> 
- 
  
 Для работы с файловой системой необходимо подключить библиотеку: Для работы с файловой системой необходимо подключить библиотеку:
Строка 114: Строка 114:
 </code>  </code> 
  
-После этого можно работать с функциями файловой системы. Для начала получим список файлов: +Выводим размер объекта (для директории он всегда равен 0)
-<file python Exp43-1.py[enable_line_numbers="2", start_line_numbers_at="1"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="15"]> 
-import os+    Serial.print("size: "); 
 +    Serial.println(file.size()); 
 +</code> 
  
-files os.listdir()+В конце тела цикла открываем следующий файл в директории: 
 +<code arduino[enable_line_numbers="2", start_line_numbers_at="15"]> 
 +    file = dir.openNextFile()
 +</code> 
  
-for file in files: +В следующих строках мы последовательно форматируем файловую систему и инициализируем ее
-    print(file) +<code arduino[enable_line_numbers="2", start_line_numbers_at="26"]
-</file> +  LittleFS.format(); 
- +  LittleFS.begin();
-Программы вывела в терминал список файлов. В вашем случае вывод может отличаться+
-<code> +
-boot.py +
-init.mpy +
-lcd_api.py +
-esp8266_i2c_lcd.py +
-mfrc522.mpy +
-temp_data.csv+
 </code> </code>
  
-Мы видим список файловОднако нам может требоваться допонительная информация, например размер файлов. Для этого есть функция ''ilistdir()'' +Создаем файл "test.txt", добавляем в него текст "Some text", закрываем файл и выводим содержимое корневой директории файловой системы:  
-<file python Exp43-2.py[enable_line_numbers="2", start_line_numbers_at="1"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="29"]> 
-import os+  File file = LittleFS.open("/test.txt", "w"); 
 +  file.print("Some text"); 
 +  file.close(); 
 +  listDir("/", false); 
 +</code> 
  
-files os.ilistdir() +Создаем в корневой директории директорию "dir" и снова выводим содержимое коневой директории:   
-for file in files: +<code arduino[enable_line_numbers="2", start_line_numbers_at="34"]> 
-    print(file+  LittleFS.mkdir("/dir"); 
-</file>+  listDir("/", false); 
 +</code>
  
-Программа выводит список файлов: Имятип (файл или директория), 0, размер файла в байтах +Создаем в директории "dir" файл "test2.txt", добавляем в него текст и закрываем. 
 +Выводим содержимое директории "dir" сначала без отображения пути файла, после с отображением:    
 +<code arduino[enable_line_numbers="2", start_line_numbers_at="37"]> 
 +  file = LittleFS.open("/dir/test2.txt", "w"); 
 +  file.print("Some other text"); 
 +  file.close(); 
 +  listDir("/dir/", false); 
 +  listDir("/dir/", true); 
 +</code>
  
-<code> +Удаляем сначала файл "test2.txt" в директории "dir", после саму директорию. После выводим содержимое корневой папки:   
-('boot.py', 32768, 0, 252) +<code arduino[enable_line_numbers="2", start_line_numbers_at="43"]
-('init.mpy', 32768, 0, 225+  LittleFS.remove("/dir/test2.txt"); 
-('lcd_api.py', 32768, 0, 6882) +  LittleFS.rmdir("/dir"); 
-('esp8266_i2c_lcd.py', 32768, 0, 3293+  listDir("/"false);
-('mfrc522.mpy', 32768, 0, 2392) +
-('temp_data.csv', 32768, 0820)+
 </code> </code>
  
-Теперь давайте создадим директорию с именем dir: +Переименовываем файл "test.txt" в "test_new.txt" и выводим содержимое корневой директории:    
-''os.mkdir('dir')''Если такая директория уже есть, то получим сообщение об ошибке. Если все в порядке, то директория будет создана. Теперь повторим вывод функции ilistdir() +<code arduino[enable_line_numbers="2", start_line_numbers_at="47"]
- +  LittleFS.rename("/test.txt""/test_new.txt"); 
-<code> +  listDir("/"false);
-('boot.py', 32768, 0, 252) +
-('init.mpy'32768, 0, 225) +
-('lcd_api.py', 32768, 0, 6882+
-('esp8266_i2c_lcd.py', 32768, 0, 3293) +
-('mfrc522.mpy', 32768, 0, 2392) +
-('temp_data.csv', 32768, 0, 820) +
-('dir', 16384, 00)+
 </code> </code>
  
-Как видно, директория dir создалась. +Ниже приведен полный вывод программы в последовательный порт:
- +
-В файловых системах есть такое понятие как //путь//. Это последовательность вложенных директорий от корня файловой системы до какого-либо файла или директории. Давайте посмотрим путь до текущей директории: +
-<file python Exp43-3.py[enable_line_numbers="2", start_line_numbers_at="1"]> +
-import os +
- +
-uos.getcwd() +
-</file> +
- +
-Результат:+
 <code> <code>
-'/' 
-</code> 
-Текущей директорией является / - это значит, что мы находимся в корне файловой системы. Давайте перейдем в недавно созданную нами директорию dir и повторно выведем текущую директорию 
  
-<file python Exp43-3.py[enable_line_numbers="2"start_line_numbers_at="1"]> +name: test.txt type: filesize: 9
-import os+
  
-os.chdir('/dir') +name: dir, type: folder, size: 0 
-uos.getcwd() +name: test.txt type: file, size: 9
-</file>+
  
-Результат: +nametest2.txt type: filesize15
-<code> +
-'/dir' +
-</code> +
-Это значит, что мы перешли в директорию /dir и сейчас она является текущей директорией. +
-Если мы сейчас запросим список файловто получим пустой ответ так как в директории /dir у нас нет файлов. Мы можем получить список файлов в корне или в другой директории, если укажем конкретный путь, например: +
-<code python> +
-files = os.listdir('/'+
-</code>+
  
-Вернемся обратно в корень файловой системы и удалим директорию dir: +name: /dir/test2.txt type: file, size: 15
-<file python Exp43-4.py[enable_line_numbers="2"start_line_numbers_at="1"]> +
-import os+
  
-os.chdir('/'+name: test.txt type: file, size: 9
-os.rmdir('dir'+
-</file+
- +
-Директорию нельзя удалитьесли в ней есть вложенные файлы или директории. Сначала нужно удалить их. Если все в порядке — директория удалится. Если сейчас запросить список файлов в корне, то увидим, что директории dir больше нет. +
- +
-Также мы можем удалить файл +
-<code python> +
-uos.remove('filename'+
-</code>+
  
-или переименовать файл +name: test_new.txt type: filesize: 9
-<code python> +
-uos.rename('old_name''new_name')+
 </code> </code>
  
-<WRAP center round info 60%> +Так как программа выполняется очень быстро для того, чтобы увидеть вывод в последовательный необходимо открыть вкладку последовательного порта и нажать кнопку "Reset" на лаборатории. 
-[[https://docs.micropython.org/en/latest/library/uos.html|Подробная информация о работе с файловой системой]] +
-</WRAP>+