С file: File Класс (System.IO) | Microsoft Learn

Файл hosts: где находится и как его изменить

Файл hosts — текстовый документ, который содержит в себе информацию о домене и IP-адресе, который ему соответствует. Файл hosts появился во времена зарождения Интернета (ARPANET) и служил неким маршрутизатором, пока на замену ему не пришла служба DNS. Но до сих пор он не утратил важности и по-прежнему используется как инструмент, который обладает приоритетом перед обращением к DNS-серверам.

Зачем нужен файл hosts

Предположим: вы зарегистрировали домен и привязали его к Hosting Linux. Но чтобы увидеть сайт, вам нужно дождаться делегирования домена на DNS-серверы. В файле hosts вы можете указать ваш домен и IP-адрес хостинга, а затем открыть браузер и зайти на ваш сайт, не дожидаясь делегирования домена. Также с его помощью вы можете заблокировать на локальном компьютере доступ к определённому сайту, указав соответствующую запись.

Где находится файл hosts

Путь к папке, где лежит файл hosts, зависит от операционной системы, которая установлена на вашем компьютере:

  • Windows XP, 2003, Vista, 7, 8, 10 — c:\windows\system32\drivers\etc\hosts
  • Linux, Ubuntu, Unix, BSD — /etc/hosts
  • macOS — /private/etc/hosts

Редактировать файл etc hosts нужно от имени администратора, иначе вы не сможете сохранить внесённые изменения.

Как внести изменения в файл hosts

Ниже мы рассмотрим, как редактировать и как сохранить изменения в файле hosts. Важно открыть файл с правами администратора, иначе система не даст вам его сохранить. Выберите вашу операционную систему и следуйте инструкции или посмотрите видеоинструкцию:

Редактирование файла hosts в Windows 7

  1. 1.

    Запустите Блокнот или любой другой редактор от имени администратора. Откройте Пуск, найдите нужный редактор, нажмите по нему правой кнопкой мыши и выберите Запуск от имени администратора:

    Как отредактировать файл hosts

  2. 2.

    В меню «Файл» нажмите Открыть и перейдите в каталог, в котором расположен файл hosts. Измените тип файла на «Все файлы»:

  3. org/HowToStep»> 3.

    Выберите файл hosts и откройте его.

  4. 4.

    Добавьте в конце файла необходимую запись в формате:

    123.123.123.123 faq-reg.ru www.faq-reg.ru

    Где:

    • 123.123.123.123 — IP-адрес вашего сервера или хостинга,
    • faq-reg.ru — имя вашего домена.

  5. 5.

    Сохраните изменения в файле.

Теперь вы можете открыть ваш сайт в браузере, не дожидаясь обновления DNS-серверов.

Редактирование файла hosts в Windows 8, 10

Чтобы изменить файл hosts в виндовс 10 (8), выполните следующие действия:

  1. 1.

    Запустите Блокнот или любой другой редактор от имени администратора. Для этого найдите его в Пуске, нажмите по нему правой кнопкой мыши и выберите Запуск от имени администратора:

  2. 2.

    В меню «Файл» нажмите Открыть и перейдите в каталог, где находится файл hosts . Измените тип файла на «Все файлы»:

  3. 3.

    Выберите файл hosts и откройте его.

  4. 4.

    Добавьте в конце файла необходимую запись в формате:

    123.123.123.123 faq-reg.ru www.faq-reg.ru

    Где:

  5. org/HowToStep»> 5.

    Сохраните изменения в файле.

Теперь вы можете открыть ваш сайт в браузере, не дожидаясь обновления DNS-серверов.

Редактирование файла hosts в Linux, Unix

В Linux файл hosts находится в папке etc. Чтобы отредактировать его:

  1. 1.

    Введите в терминал linux команду hosts:

    sudo nano /etc/hosts

  2. 2.

    Добавьте в конце файла необходимую запись в формате:

    123.123.123.123 faq-reg.ru www.faq-reg.ru

    Где:

  3. 3.

    Сохраните изменения в файле.

Теперь вы можете открыть ваш сайт в браузере, не дожидаясь обновления DNS-серверов.

Файл hosts в Ubuntu редактируется так же, как и во всех Unix-системах.

Редактирование файла hosts в MacOS

Файл hosts в Mac OS расположен в каталоге: /private/etc/hosts. Чтобы изменить его:

  1. 1.

    Запустите терминал с помощью горячих клавиш: Command (⌘) + T или через Spotlight.

  2. 2.

    Введите команду:

    sudo nano /etc/hosts

    Нажмите Enter:

  3. 3.

    Добавьте в конце файла необходимую запись в формате:

    123.123.123.123 faq-reg.ru www.faq-reg.ru

    Где:

  4. org/HowToStep»> 4.

    Сохраните изменения в файле.

Теперь вы можете открыть ваш сайт в браузере, не дожидаясь обновления DNS-серверов.

Видеосправка. Как изменить файл hosts

Также вы можете заблокировать определенный сайт через файл hosts, воспользовавшись инструкцией ниже:

Блокировка доступа к сайту через файл hosts

Доступ к сайту также можно ограничить для локального компьютера. Для этого укажите адрес страницы (домен) в файле hosts. Заблокировать IP нежелательного сайта не требуется. Блокировка осуществляется по локальному хосту с фиксированным IP (127.0.0.1):

  1. 1.

    Откройте файл hosts от имени администратора на своём ПК.

  2. 2.

    В указанной на скриншоте строке укажите IP-адрес 127.0. 0.1 и через пробел адрес нежелательного сайта. Чтобы заблокировать несколько сайтов, повторите действие в следующей строке. В примере ниже в файле hosts отказано в доступе (заблокирован доступ) к сайтам «vk.com» и «youtube.com»:

  3. 3.

    Сохраните изменения.

Готово! Доступ к сайтам будет ограничен на определенном ПК.

Оригинальный файл hosts и как его восстановить

Скачать содержимое файла hosts можно на разных ресурсах. Но мы не рекомендуем делать это, так как файл может быть заражен.

Файл hosts по умолчанию есть в каждой операционной системе, но он может быть скрыт для просмотра. Следуя инструкциям выше, вы сможете его открыть и отредактировать. Если вы удалили его, то просто создайте текстовый файл без расширения в нужной папке.

По умолчанию файл hosts выглядит следующим образом:

Для Windows

# Copyright (c) 1993-2006 Microsoft Corp. 

#

# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host
# localhost name resolution is handle within DNS itself.
#       127.0.0.1       localhost
#       ::1             localhost

Для Linux

127.0.0.1       localhost

127.0.1.1      user

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

где user (во второй строке) — это имя вашего компьютера.

Для MacOS

##

# Host Database

#

# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1  localhost
255.255.255.255  broadcasthost
::1             localhost

Удалите текущее содержимое из файла hosts, вставьте текст по умолчанию и сохраните изменения.

Теперь вы знаете, как должен выглядеть файл hosts и как с ним работать.

Помогла ли вам статья?

Да

раз уже
помогла

Знакомимся с файл-менеджером. — SwiftBook

Когда iOS приложение устанавливается на каком-то устройстве, создается структура папок, в том числе tmp каталог для хранения временных данных. В этом уроке мы научимся управлять файлами в этом tmp каталоге, а именно создавать их, читать и удалять. Этот туториал написан на iOS 9.1 и Xcode 7.1.

Откройте Xcode и создайте Single View Application. Назовите проект SwiftFileManager. Заполните название вашей организации, идентификатор организации. Выберете языком программирования Swift  и убедитесь, что в устройствах выбран iPhone.

Перейдите в Storyboard и перетащите четыре кнопки в столбик на главный экран, растяните их по ширине экрана.

Задайте произвольные цвета фону и тексту внутри кнопок.

 Дайте кнопкам следующие названия:

  • Создать файл
  • Прочитать файл
  • Удалить файл
  • Посмотреть директорию

 В итоге у вас должно получиться что-то вроде этого:

Теперь выделите все элементы и пройдите во вкладку «Resolve Auto Layout Issues» в правом нижнем углу (первая кнопка справа) и выберите пункт Add Missing Constraints (Добавить отсутствующие ограничения)

После того как вы это сделали вам нужно избавиться от одного ограничения, так как он портит вам внешний вид приложения. не верите? Запустите ваш проект!

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

Теперь у нас появилась рамка вокруг нашей кнопки. Давайте сделаем так, чтобы высота этой кнопки совпадала с высотой предыдущей кнопки?

Зажав Ctrl перетаскиваем от кнопки «Посмотреть директорию» на «Удалить файл» и отпускаем. Здесь нам нужно выбрать ограничение типа «Equal Heights«. 

Теперь, если вы перезапустите проект, он у вас будет выглядеть хорошо.

Теперь давайте соединим наш код со сторибордом. Нажмите на кнопку Assistant Editor и убедитесь, что в правой части располагается файл ViewController.swift. Нажмите Ctrl и перетащите из кнопки «Создать файл» в класс ViewController и создайте следующий IBAction

Нажмите Ctrl и перетащите из «Посмотреть директорию»  кнопку в класс ViewController и создайте такой IBAction.

Аналогично проделаем процедуру с двумя оставшимися кнопками:

Перейдите в файл ViewController.swift и добавьте три свойства для класса ViewController


let fileManager = NSFileManager()
    let tempDir = NSTemporaryDirectory()
    let fileName = "file.txt"
  • Класс NSFileManager позволяет исследовать содержимое файловой системы и вносить в нее изменения
  • NSTemporaryDirectory является временным каталогом текущего пользователя
  • Файл с именем «text.txt» будет использоваться для этого туториала

Перед IBAction будет реализован вспомогательный метод checkDirectory(), который будет использоваться для проверки файлов внутри каталога:


func checkDirectory() -> String? {
        do {
            let filesInDirectory = try fileManager.contentsOfDirectoryAtPath(tempDir)
            
            let files = filesInDirectory
            if files. count > 0 {
                if files.first == fileName {
                    print("file.txt found")
                    return files.first
                } else {
                    print("File not found")
                    return nil
                }
            }
        } catch let error as NSError {
            print(error)
        }
        return nil
    }

Все файлы внутри временного каталога будут помещены в массив типа String, и этот массив будет проверяться на наличие нашего file.txt файла. Если проверка пройдет успешно, то имя файла будет возвращено, если нет — то будет возвращен nil. Далее, реализуем метод createFileBtnPressed().


@IBAction func createFileBtnPressed(sender: AnyObject) {
        
        let path = (tempDir as NSString).stringByAppendingPathComponent(fileName)
        let contentsOfFile = "Some Text Here"
        
        // Записываем в файл
        do {
            try contentsOfFile. writeToFile(path, atomically: true, encoding: NSUTF8StringEncoding)
            print("File text.txt created at temp directory")
        } catch let error as NSError {
            print("could't create file text.txt because of error: \(error)")
        }
    }

Файл text.txt создается с контентом «Some Text Here»  и записывается в каталог tempDir/ с методом writeToFile:atomically:encoding. Если у нас не получается с вами создать файл, то в консоль выводится ошибка.

Далее, реализуем метод viewDirectoryBtnPressed():


@IBAction func viewDirectoryBtnPressed(sender: AnyObject) {
        // Смотрим содержимое папки
        let directoryWithFiles = checkDirectory() ?? "Empty"
        print("Contents of Directory =  \(directoryWithFiles)")
    }

Мы проверяем наличие файла file.txt в каталоге через метод checkDirectory(), если у нас есть этот файл, то в directoryWithFiles присваивается возвращаемое значение метода checkDirectory(), если же файла у нас не оказывается, то в directoryWithFiles присваивается строка «Empty» .   Оператор ??  это коалесцирующий nil оператор (или оператор объединяющий по nil),  работает он таким образом, что когда checkDirectory() будет равен nil, то directoryWithFiles будет равен «Empty» , если же  checkDirectory() не будет равен nil (то есть «file.txt» есть), то  в directoryWithFiles перейдет название файла «file.txt«. Значение directoryWithFiles будет выведено в консоль.

Далее, реализуем метод readFileBtnPressed():


@IBAction func readFileBtnPressed(sender: AnyObject) {
        
        // Читаем 
        let directoryWithFiles = checkDirectory() ?? "Empty"
        
        let path = (tempDir as NSString).stringByAppendingPathComponent(directoryWithFiles)
        
        do {
            let contentsOfFile = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding)
            print("content of the file is: \(contentsOfFile)")
        } catch let error as NSError {
            print("there is an file reading error: \(error)")
        }
    }

Метод contentsOfFile:encoding помещает содержание файла в NSString. Если файл присутствует, то его содержимое будет выведено в консоль, в противном случае появится сообщение «there is an file reading error:«.

Наконец, реализуем метод deleteFileBtnPressed():


@IBAction func deleteFileBtnPressed(sender: AnyObject) {
        
        let directoryWithFiles = checkDirectory() ?? "Empty"
        do {
            let path = (tempDir as NSString).stringByAppendingPathComponent(directoryWithFiles)
            try fileManager.removeItemAtPath(path)
            print("file deleted")
        } catch let error as NSError {
            print("error occured while deleting file: \(error.localizedDescription)")
        }
    }

Метод removeItemAtPath() удалит файл, если он есть. Запустите проект, выберете кнопки и посмотрите на консоль, чтобы увидеть результаты наших действий.

Урок подготовил: Акулов Иван

With Open Statement в Python

метод open(). Однако использование метода open() напрямую требует использования метода close() для явного закрытия файла. Вместо этого вы можете создать контекст, используя оператор with Open в python. Он возвращает файловый объект, который имеет методы и атрибуты для получения информации об открытом файле и управления им.

Содержание

  1. Оператор With в Python
  2. Оператор With Использование функции Open() в Python
  3. Заключение

Оператор With улучшает синтаксис и обработку исключений.

«Инструкция with упрощает обработку исключений, инкапсулируя общие задачи подготовки и очистки».

Кроме того, он автоматически закроет файл. Оператор with предоставляет способ убедиться, что очистка всегда используется.

Без оператора with мы бы написали примерно так:

 file = open("welcome.txt")
данные = файл.чтение()
распечатать данные
file.close() # Важно закрыть файл, когда вы закончите с ним
 

В приведенном выше коде нам нужно явно закрыть файл с помощью метода close().

Открыть файл с помощью with так же просто, как: with open(filename) as file:

 with open("welcome.txt") as file: # Использовать файл для ссылки на объект файла
   данные = файл.чтение()
   сделать что-то с данными
 

Открывает output.txt в режиме записи

 с open('output.txt', 'w') в качестве файла: # Использовать файл для ссылки на объект файла
    file.write('Привет!')
 

В приведенном выше коде видно, что мы открыли файл output.txt с помощью инструкции with open. Оператор возвращает указатель файла, который присваивается переменной «файл». Теперь мы можем выполнять любую операцию над файловым объектом в контексте оператора with. Как только все операторы выполнены и выполнение достигает конца блока контекста with, файл автоматически закрывается интерпретатором Python. Кроме того, если программа сталкивается с каким-либо исключением внутри блока with, контекст with open в python закрывает файл перед завершением программы. Таким образом, данные внутри файла остаются в безопасности, даже если программа внезапно завершается.

Обратите внимание, что нам не нужно было писать «file.close()». Это будет вызвано автоматически.

Заключение

В этой статье мы обсудили, как можно использовать оператор with open вместо метода open()
для открытия файла в Python. Чтобы узнать больше о программировании на Python, вы можете прочитать эту статью о работе со строками в Python. Вам также может понравиться эта статья о python, если вкратце.

Рекомендуемое обучение Python

Курс: Python 3 для начинающих

Более 15 часов видеоконтента с инструкциями для начинающих. Узнайте, как создавать приложения для реального мира, и освойте основы.

Зарегистрируйтесь сейчас

Рубрики: Файлы, система и ОС Автор: PFB Staff Writer

python — Как открыть файл с помощью оператора open with

спросил

Изменено 4 года назад

Просмотрено 904 тыс. раз

Я ищу способ ввода и вывода файлов в Python. Я написал следующий код для чтения списка имен (по одному в строке) из файла в другой файл, проверяя имя на соответствие именам в файле и добавляя текст к вхождениям в файле. Код работает. Можно ли сделать лучше?

Я хотел использовать с оператором open(... как для входных, так и для выходных файлов, но не понимаю, как они могут находиться в одном блоке, что означает, что мне нужно хранить имена во временном месте.

 фильтр по умолчанию (txt, старый файл, новый файл):
    '''\
    Чтение списка имен из файла строка за строкой в ​​выходной файл.
    Если строка начинается с определенного имени, вставьте строку текста
    после имени перед добавлением строки в выходной файл.
    '''
    выходной файл = открыть (новый файл, 'w')
    с open(oldfile, 'r', encoding='utf-8') в качестве входящего файла:
        для строки в файле:
            если строка.startswith(txt):
                line = line[0:len(txt)] + ' - Действительно великий человек!\n'
            outfile. write(строка)
    выходной файл.close()
    return # Получу ли я что-нибудь, включив это?
# введите имя, которое вы хотите проверить
text = input('Пожалуйста, введите имя великого человека:')
letsgo = фильтр (текст, 'Испанский', 'Испанский3')
 
  • python
  • файл
  • python-3.x
  • файл-io
  • io

4

Python позволяет помещать несколько операторов open() в один с . Вы разделяете их запятыми. Тогда ваш код будет таким:

 def filter(txt, oldfile, newfile):
    '''\
    Чтение списка имен из файла строка за строкой в ​​выходной файл.
    Если строка начинается с определенного имени, вставьте строку текста
    после имени перед добавлением строки в выходной файл.
    '''
    с open(newfile, 'w') в качестве внешнего файла, open(oldfile, 'r', encoding='utf-8') в качестве входного файла:
        для строки в файле:
            если строка. startswith(txt):
                line = line[0:len(txt)] + ' - Действительно великий человек!\n'
            outfile.write(строка)
# введите имя, которое вы хотите проверить
text = input('Пожалуйста, введите имя великого человека:')
letsgo = фильтр (текст, 'Испанский', 'Испанский3')
 

И нет, вы ничего не выиграете, поместив явное return в конец вашей функции. Вы можете использовать return для раннего выхода, но у вас это было в конце, и функция завершится без него. (Конечно, с функциями, которые возвращают значение, вы используете return , чтобы указать возвращаемое значение.)

Использование нескольких элементов open() с с не поддерживалось в Python 2.5, когда оператор с был введен или в Python 2.6, но поддерживается в Python 2.7 и Python 3.1 или новее.

http://docs.python.org/reference/compound_stmts.html#the-with-statement http://docs.python.org/release/3.1/reference/compound_stmts. html#the-with-statement

Если вы пишете код, который должен работать на Python 2.5, 2.6 или 3.0, вложите с операторами как другие ответы предлагали или использовали contextlib.nested .

0

Используйте вложенные блоки, подобные этому,

 с open(newfile, 'w') в качестве исходящего файла:
    с open(oldfile, 'r', encoding='utf-8') в качестве входящего файла:
        # ваша логика идет прямо здесь
 

Вы можете вкладывать свои блоки. Вот так:

 с open(newfile, 'w') в качестве исходящего файла:
    с open(oldfile, 'r', encoding='utf-8') в качестве входящего файла:
        для строки в файле:
            если строка.startswith(txt):
                line = line[0:len(txt)] + ' - Действительно великий человек!\n'
            outfile.write(строка)
 

Это лучше, чем ваша версия, потому что вы гарантируете, что outfile будет закрыт, даже если ваш код столкнется с исключениями.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *