С++ — это настолько запутанный язык, что споткнуться можно на ровном месте. Начинающие от этого просто воют от бессильной злобы, и многие ломаются — лучше уж Python.
Сегодня расскажу об одной такой засаде, на которую могут напороться (и напарываются) почти все новички.
Вот пример кода:
string str = «D:MYPROG_TESTCPPDEVCPP-TESTmyfile.txt»;
А вот то, что будет выведено на экран:
Куда, мать вашу, делись все косые чёрточки из строки?
Добро пожаловать на борт, салага. Теперь ты в армии! В армии сошедших с ума новичков С++. И таких нежданчиков тебя ждёт много-много…
Но хватит лирики. Давайте разберёмся, почему так произошло.
А засада в том, что в С++ — это управляющий символ . И он, сцуко, не только не выводится на экран, он вообще игнорируется. Поэтому если вы попытаетесь, например, открыть файл, путь к которому указан в строке str, то у вас тоже нифига не получится. Хотя такой файл существует и находится именно там.
#51. Функция open. Чтение данных из файла | Python для начинающих
Поэтому, чтобы работать с путями файлов в DOS и Windows, эти пути вам придётся записывать так:
string str = «D:\MYPROG\_TEST\CPP\DEVCPP-TEST\myfile.txt»;
то есть писать две косых черты вместо одной. Тогда всё будет правильно:
Но почему же так всё через жопу?
А дело в том, что С++ — это наследник языка С. А С был создан специально для Unix. А в Unix/Linux в путях к файлу нет символов , вместо этого там используется прямой слэш (/). То есть в Unix этот путь выглядел бы так:
/MYPROG/_TEST/CPP/DEVCPP-TEST/myfile.txt
и никаких неприятностей бы не было.
Так что разработчики С/С++ вроде как и не причём. Вроде всё правильно сделали. Но я, однако, так не считаю. Неужели быть такими недальновидными и не предположить, что на этом языке будут разрабатываться программы не только для Unix?
Хотя, конечно, оправданием может служить то, что С появился примерно в 1970 году, а DOS — только в конце 70-х начале 80-х. Но всё равно от этого не легче. И приходится теперь маяться с этими заморочками.
Ну да ладно. Теперь вы это знаете. И одной головной болью у вас меньше. Подписывайтесь на канал . Постараюсь избавить вас и от других болей )))
Источник: dzen.ru
Решения задач на Си в Линyкс
Напишите программу, которая выводит на экран путь к файлу stdio.h.
#include «stdio.h»
main()
printf(«/usr/include/stdio.h»);
>
Комментариев нет:
Отправить комментарий
Подписаться на: Комментарии к сообщению (Atom)
Реклама без которой не обойтись. 🙂
Поиск по этому блогу
Обо мне
Подпишитесь на Решение задач на Си в Линукс
Сообщения
Парсинг в Python за 10 минут!
Сообщения
Комментарии
Комментарии
Общее·количество·просмотров·страницы
**All text of this blog under Creative Commons «Attribution-ShareAlike» license, Version 2.0**
. Тема «Простая». Автор изображений для темы: luoman. Технологии Blogger.
Источник: cirishen.blogspot.com
Построчное чтение файла в Python 3
Вы стали счастливым обладателем больших текстовых файлов, в которых заключены важные данные? Это здорово! Однако, теперь перед Вами стоит задача извлечения данных из файла по частям, желательно, по строкам. Ведь чтение большого файла и одномоментная загрузка его содержимого в оперативную память чревата жалобами компьютера на усталость и «замутненное сознание», что с 2020 года является непозволительной роскошью для рабочих лошадок. Поэтому предлагаю рассмотреть варианты, с помощью которых можно реализовать построчное чтение файла в Python 3 по следующему сценарию:
- Открыть файл
- Считать первую строку
- Вывести на экран первую строку
- Считать вторую строку
- Вывести на экран 2ю строку
- и так далее..
Сразу оговорюсь, что в Python открыть файл и прочитать данные из него можно несколькими способами. Для начала предлагаю взглянуть на наиболее оптимальный (исключительно на мой взгляд) вариант. Детальный разбор кода с рассмотрением других вариантов будет приведен чуть ниже, в следующем разделе статьи.
Оптимальный вариант для построчного чтения файла в Python:
1. Подготавливаем файл:
В качестве примера я буду использовать файл с именем «text.txt», состоящий из 5 строк следующего вида:
Файл «text.txt»
Это первая строка это вторая строка это третья строка это четвертая строка это последняя, пятая строка
2. Создадим переменную для хранения пути к файлу:
path_to_file = «путь_к_файлу»
Замените выражение в коде «путь к файлу» на актуальный путь к вашему файлу. Если у вас возникли сложности с определением пути к файлу, ознакомьтесь с инструкцией «Как задать путь к файлу в Python» и возвращайтесь — будем кодить построчное считывание файла!
3. Представленный ниже код откроет файл и выведет его содержимое на экран:
path_to_file = «путь_к_файлу» with open(path_to_file) as file: for line in file: print(line)
На экран выведется все содержимое файла:
Это первая строка это вторая строка это третья строка это четвертая строка это последняя, пятая строка
Чтобы дополнить вывод номерами строк, добавим в приведенный выше код переменную num_line для хранения номера строки и функцию enumerate(file) для получения номера строки:
path_to_file = «путь_к_файлу» with open(path_to_file) as file: for num_line, line in enumerate(file): print(num_line, line)
Теперь вывод выглядит так:
0 Это первая строка 1 это вторая строка 2 это третья строка 3 это четвертая строка 4 это последняя, пятая строка
Приведенный выше способ вывода данных из файла — не единственный, существуют и другие рабочие варианты. Предлагаю произвести детальный разбор построчного чтения файла в Python для того, чтобы понять как работают используемые функции и ознакомиться с другими вариантами.
Детальный разбор построчного чтения файла в Python:
1. Первым делом мы открываем файл:
Для открытия файла мы использовали функцию open(), которая может принимать несколько аргументов. Однако, наиболее важными аргументами являются первые два:
- путь к файлу;
- режим работы с файлом. Это не обязательный параметр, который по умолчанию принимает значение «r»(read), что позволяет открыть файл для чтения. Давайте взглянем, какие существуют режимы работы с файлами в Python:
- r — (от английского слова read), режим позволяет открыть файл для чтения текста;
- w — (от английского слова write) — позволяет открыть файл для записи текста. Если в файле уже присутствует какая-то информация, она будет стерта;
- a — (от английского add) — используется для открытия файла в режиме «дозаписи», при котором к существующим в файле данным будет добавлена новая информация. При этом старые данные также остаются в файле;
- rb — режим чтения двоичных данных;
- wb — режим записи двоичных файлов.
Так как нам необходимо прочитать файл, то подходящий нам режим работы с файлом — «r», который является режимом по умолчанию. А значит, нет необходимости его указывать.
Для открытия файла мы воспользовались строкой вида:
with open(path_to_file) as file: