Архив метки: Python

Как удалять файлы и каталоги в Python

Python имеет несколько встроенных модулей, которые позволяют удалять файлы и каталоги.

В этом руководстве объясняется, как удалять файлы и каталоги с помощью функций из модулей os , pathlib и shutil .

Удаление файлов

В Python вы можете использовать os.remove() , os.unlink() , pathlib.Path.unlink() для удаления одного файла.

Модуль os обеспечивает переносимый способ взаимодействия с операционной системой. Модуль доступен как для Python 2, так и для 3.

Чтобы удалить один файл с помощью os.remove() , передайте путь к файлу в качестве аргумента:

import os



file_path = '/tmp/file.txt'

os.remove(file_path)


os.remove() и os.unlink() семантически идентичны:

import os



file_path = '/tmp/file.txt'

os.unlink(file_path)


Если указанный файл не существует, FileNotFoundError ошибка FileNotFoundError . И os.remove() и os.unlink() могут удалять только файлы, но не каталоги. Если указанный путь указывает на каталог, они IsADirectoryError ошибку IsADirectoryError .

Для удаления файла требуется разрешение на запись и выполнение для каталога, содержащего файл. В противном случае вы получите ошибку PermissionError .

Чтобы избежать ошибок при удалении файлов, вы можете использовать обработку исключений, чтобы перехватить исключение и отправить соответствующее сообщение об ошибке:

import os



file_path = '/tmp/file.txt'



try:

    os.remove(file_path)

except OSError as e:

    print("Error: %s : %s" % (file_path, e.strerror))


Модуль pathlib доступен в Python 3.4 и выше. Если вы хотите использовать этот модуль в Python 2, вы можете установить его с помощью pip. pathlib предоставляет объектно-ориентированный интерфейс для работы с путями файловой системы для различных операционных систем.

Чтобы удалить файл с pathlib модуля pathlib , создайте объект Path указывающий на файл, и вызовите метод unlink() для объекта:

from pathlib import Path



file_path = Path('/tmp/file.txt')



try:

    file_path.unlink()

except OSError as e:

    print("Error: %s : %s" % (file_path, e.strerror))


pathlib.Path.unlink() , os.remove() и os.unlink() также можно использовать для удаления символической ссылки .

Сопоставление с образцом

Вы можете использовать модуль glob для сопоставления нескольких файлов на основе шаблона. Например, чтобы удалить все файлы .txt каталоге /tmp , вы должны использовать что-то вроде этого:

import os

import glob



files = glob.glob('/tmp/*.txt')



for f in files:

    try:

        f.unlink()

    except OSError as e:

        print("Error: %s : %s" % (f, e.strerror))


Чтобы рекурсивно удалить все файлы .txt в каталоге /tmp и всех подкаталогах в нем, передайте аргумент recursive=True функции glob() и используйте шаблон « ** »:

import os

import glob



files = glob.glob('/tmp/**/*.txt', recursive=True)



for f in files:

    try:

        os.remove(f)

    except OSError as e:

        print("Error: %s : %s" % (f, e.strerror))


Модуль pathlib включает две функции glob, glob() и rglob() для сопоставления файлов в данном каталоге. glob() сопоставляет файлы только в каталоге верхнего уровня. rglob() сопоставляет все файлы в каталоге и всех подкаталогах. В следующем примере кода удаляются все файлы .txt каталоге /tmp :

from pathlib import Path



for f in Path('/tmp').glob('*.txt'):

    try:

        f.unlink()

    except OSError as e:

        print("Error: %s : %s" % (f, e.strerror))


Удаление каталогов (папок)

В Python вы можете использовать os.rmdir() и pathlib.Path.rmdir() для удаления пустого каталога и shutil.rmtree() для удаления непустого каталога.

В следующем примере показано, как удалить пустой каталог:

import os



dir_path = '/tmp/img'



try:

    os.rmdir(dir_path)

except OSError as e:

    print("Error: %s : %s" % (dir_path, e.strerror))


В качестве альтернативы вы можете удалить каталоги с pathlib модуля pathlib :

from pathlib import Path



dir_path = Path('/tmp/img')



try:

    dir_path.rmdir()

except OSError as e:

    print("Error: %s : %s" % (dir_path, e.strerror))


Модуль shutil позволяет выполнять ряд высокоуровневых операций с файлами и каталогами.

С помощью функции shutil.rmtree() вы можете удалить указанный каталог, включая его содержимое:

import shutil



dir_path = '/tmp/img'



try:

    shutil.rmtree(dir_path)

except OSError as e:

    print("Error: %s : %s" % (dir_path, e.strerror))


Аргумент, переданный в shutil.rmtree() не может быть символической ссылкой на каталог.

Выводы

Python предоставляет несколько модулей для работы с файлами.

Мы показали вам, как использовать os.remove() , os.unlink() , pathlib.Path.unlink() для удаления одного файла, os.rmdir() и pathlib.Path.rmdir() для удаления пустого файла. directory и shutil.rmtree() для рекурсивного удаления каталога и всего его содержимого.

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

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-11-22T08:11:03
Python

Функция фильтра в Python

Filter — это встроенная функция Python. Он фильтрует указанную последовательность или итерацию с помощью функции, которая проверяет каждый элемент или элемент в итерации на истинность или ложь. Проще говоря, функция filter фильтрует итерируемое через функцию. Данная функция проверяет каждый элемент последовательности или итерации и возвращает истину, если элемент удовлетворяет заданным критериям. В результате функция filter() создает новый итератор. Чаще всего используются итерируемые списки, кортежи и словари. В этой статье кратко описывается функция filter() с помощью примеров.

 

Синтаксис функции filter()

Давайте сначала обсудим синтаксис функции filter(). Синтаксис функции filter() следующий:

filter(function, iterable or sequence)

 

Функция фильтра принимает в качестве аргумента два параметра, т. е. функцию и итерацию. Функция проверяет каждый элемент или элемент итерируемого, истинно это или нет, в соответствии с заданными критериями. Второй аргумент — итерация или фильтруемая последовательность. Функция оценивает каждый элемент итерации по заданным критериям. Наконец, функция filter() возвращает отфильтрованный итератор.

Давайте посмотрим на примеры функции filter() и реализуем ее в нашем скрипте Python.

 

Пример 1. Отфильтруйте список чисел

Создадим список номеров и отфильтруем его. В данном примере list_func() оценивает каждый элемент списка по заданному условию. Если элемент списка больше 5, функция возвращает значение true и добавляет элемент в фильтр.

#создание списка номеров



my_list = [1,2,3,4,5,6,10,20,35,8,4,50,60]



#создаем функцию



def list_func(listObj):



# условный оператор, чтобы проверить номер



if(listObj>5):



return True



else:



return False



#используя функцию Filter для фильтрации повторяемое через list_func



numbers = filter(list_func,my_list)



#печать нового итератора



for i in numbers:



print(i)



 




В выходных данных отображается отфильтрованный итератор. Отфильтрованный итератор состоит из всех элементов, которые больше 5.

 

Пример 2: отфильтровать список символов

Создадим список символов и применим функцию фильтрации.

#создание списка номеров



my_list = ['a','b','c','l','d','i','k','n','o','u','x']



#создание функции



def list_func(listObj):



word_list=['l', 'i', 'n', 'u', 'x']



# условный оператор для проверки символа



if(listObj in word_list):



return True



else:



return False



#использование функции фильтра для фильтрации итераций через list_func



words = filter(list_func,my_list)



#печать нового цикла



for i in words:



print(i)




 

Примеры 3. Отфильтруйте четное число

Давайте отфильтруем четные числа из заданного списка чисел с помощью функции фильтрации.

#создание списка номеров



my_list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]



#создание функции



def list_func(listObj):



# условный оператор для проверки символа



if(listObj%2==0):



return True



else:



return False



#использование функции фильтра для фильтрации итераций через list_func



even_numbers= filter(list_func,my_list)



#печать нового цикла



for i in even_numbers:



print(i)




 

Примеры 4: отфильтровать високосный год

Давайте отфильтруем високосные годы из данного списка лет с помощью функции фильтрации.

#создание списка номеров



my_list = [2010,2012,2014,2016,2018,2020,2022,2024]



#создание функции



def list_func(listObj):



# условный оператор для проверки високосного года



if(listObj%4==0):



return True



else:



return False



#использование функции фильтра для фильтрации итераций через list_func



leap_year= filter(list_func,my_list)



#печать нового цикла



for i in leap_year:



print(i)




 

Выходные данные отображают високосные годы из данного списка лет.

 

Примеры 5: использование лямбда-функции с filter ()

Функция фильтра в основном используется с лямбда-функцией. Давайте передадим лямбда-функцию в качестве аргумента функции filter().

#создание списка номеров



my_list = [2010,2012,2014,2016,2018,2020,2022,2024]



##объявление переменной even_number



#переменная even_number содержит четные числа



#объявление функции lambda



even_number = filter(lambda listObj:listObj%2==0,my_list)



print("Список четных чисел")



for i in even_number:



print(i)



leap_year = filter(lambda listObj:listObj%4==0,my_list)



print("Список високосных лет")



for x in leap_year:



print(x)




 

Вывод

Filter() — это встроенная функция Python, которая используется для фильтрации итерации для данной функции. Эта статья объясняет функцию filter() с примерами.



2020-11-19T09:39:20
Python

Как проверить, существует ли файл или каталог в Python

При написании скриптов Python вы можете захотеть выполнить определенное действие, только если файл или каталог существует или нет. Например, вы можете захотеть прочитать или записать данные в файл конфигурации или создать файл, только если он уже не существует.

В Python есть много разных способов проверить, существует ли файл, и определить его тип.

В этом руководстве показаны три различных метода проверки существования файла.

Проверьте, существует ли файл

Самый простой способ проверить, существует ли файл, — это попытаться открыть файл. Этот подход не требует импорта какого-либо модуля и работает как с Python 2, так и с Python 3. Используйте этот метод, если вы хотите открыть файл и выполнить какое-либо действие.

В следующем фрагменте кода используется простой блок try-except. Мы пытаемся открыть файл filename.txt , и если файл не существует, возникает исключение IOError и IOError сообщение «Файл недоступен»:

try:
    f = open("filename.txt")
    # Do something with the file
except IOError:
    print("File not accessible")
finally:
    f.close()

Если вы используете Python 3, вы также можете использовать FileNotFoundError вместо исключения IOError .

При открытии файлов рекомендуется использовать ключевое слово with , которое обеспечивает правильное закрытие файла после завершения файловых операций, даже если во время операции возникает исключение. Это также делает ваш код короче, потому что вам не нужно закрывать файл с помощью функции close .

Следующий код эквивалентен предыдущему примеру:

try:
    with open('/etc/hosts') as f:
        print(f.readlines())
        # Do something with the file
except IOError:
    print("File not accessible")

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

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

Проверьте, существует ли файл с помощью модуля os.path

Модуль os.path предоставляет несколько полезных функций для работы с os.path путей. Модуль доступен как для Python 2, так и для 3.

В контексте этого руководства наиболее важными функциями являются:

  • os.path.exists(path) — возвращает true, если path — это файл, каталог или допустимая символическая ссылка.
  • os.path.isfile(path) — возвращает истину, если path является обычным файлом или символической ссылкой на файл.
  • os.path.isdir(path) — возвращает true, если path является каталогом или символической ссылкой на каталог.

Следующий оператор if проверяет, существует ли файл filename.txt :

import os.path

if os.path.isfile('filename.txt'):
    print ("File exist")
else:
    print ("File not exist")

Используйте этот метод, когда вам нужно проверить, существует ли файл или нет, прежде чем выполнять действие с файлом. Например, копирование или удаление файла .

Если вы хотите открыть и изменить файл, используйте предыдущий метод.

Проверьте, существует ли файл, используя модуль pathlib

Модуль pathlib доступен в Python 3.4 и выше. Этот модуль предоставляет объектно-ориентированный интерфейс для работы с путями файловой системы для различных операционных систем.

Как и в предыдущем примере, следующий код проверяет, существует ли файл filename.txt :

from pathlib import Path

if Path('filename.txt').is_file():
    print ("File exist")
else:
    print ("File not exist")

is_file возвращает истину, если path является обычным файлом или символической ссылкой на файл. Чтобы проверить наличие каталога, используйте метод is_dir .

Основное различие между pathlib и os.path заключается в том, что pathlib позволяет вам работать с путями как с объектами Path с соответствующими методами и атрибутами вместо обычных объектов str .

Если вы хотите использовать этот модуль в Python 2, вы можете установить его с помощью pip :

pip install pathlib2

Выводы

В этом руководстве мы показали вам, как с помощью Python проверить, существует ли файл или каталог.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-11-14T12:22:14
Python

Использование Tor с Python

В этом коротком, но полном руководстве я научу вас, как использовать TOR и Python вместе.

 

После этого руководства вы сможете посещать сайты TOR через приложение Python.

 

Читать

Создавайте свои собственные модули Python

Python — это многоцелевой язык динамического программирования высокого уровня. Он предоставляет множество встроенных модулей и функций для выполнения различных типов задач. Помимо этого, мы также можем создавать наши собственные модули, используя Python. Модуль похож на библиотеку на Java, C, C ++ и C #. Модуль обычно представляет собой файл, содержащий функции и операторы. Функции и операторы модулей обеспечивают определенные функции. Модуль Python сохраняется с расширением .py. В этой статье мы научимся создавать собственные модули Python.

 

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

 

Создание модулей Python

Чтобы создать модуль Python, откройте скрипт Python, напишите несколько операторов и функций и сохраните его с расширением .py. Позже мы можем вызывать и использовать эти модули где угодно в нашей программе.

Давайте создадим новый модуль с именем «MathOperation». Этот модуль содержит функции для выполнения сложения, вычитания, умножения и деления.

#Создание модуля MathOperation



#модуль обеспечивает функции сложения, вычитания, умножения и деления



#все функции принимают в качестве аргумента два числа



#создание функции добавления



def addition(num1,num2):



return num1+num2



#создание функции вычитания



def subtraction(num1,num2):



return num1-num2



#создание функции умножения



def multiplication(num1,num2):



return num1*num2



#создание функции деления



def division(num1,num2):



return num1/num2




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

 

Вызовите свой модуль

Давайте вызовем этот модуль в нашем другом скрипте Python с помощью команды import.

import MathOperation



#вызов функции сложения из модуля MathOperation



#функция вызывается с помощью имени модуля



print("Результат суммы: ",MathOperation.addition(10,4))



#вызов функции вычитания



print("Результат вычитания: ",MathOperation.subtraction(100,34))



#вызов функции умножения



print("Результат умножения: ",MathOperation.multiplication(4,3))



#вызов функции деления



print("Результат деления: ",MathOperation.division(200,5))




Вызов переменных модуля

Мы также можем объявить переменные в наших самостоятельно созданных модулях Python, присвоить значения этим переменным и вызвать их в нашем скрипте Python. Модули также могут содержать словари, списки и т. д.

#создание переменных



num1 = 10



num2 = 20



#создание списка учащихся



student = ['AndreyEx','Max','Alex','Term']



#создание студенческого словаря



std_dict = {'name':'AndreyEx','age':40,'email':'andr@andreyex.ru'}


 

Теперь давайте вызовем переменные и объекты в другом скрипте Python.

#импорт модуля



import MathOperation



#вызов переменной num1



print("Значение num1 равно:",MathOperation.num1)



#вызов переменной num2



print("Значение num1 равно:",MathOperation.num2)



#вызов списка студентов



print("Значение num1 равно:",MathOperation.student)



#список студентов



print(MathOperation.student[0])



print(MathOperation.student[1])



print(MathOperation.student[2])



print(MathOperation.student[3])



#печать студенческого словаря



print(MathOperation.std_dict)



#вызов элемента студенческого словаря



print(MathOperation.std_dict['name'])



print(MathOperation.std_dict['age'])



print(MathOperation.std_dict['email'])




Результат показывает, что мы успешно получили доступ к переменным и функциям из модуля «MathOperation».

 

Список всех функций и переменных модуля

Python предоставляет встроенную функцию dir (), которая перечисляет имена всех функций и переменных, присутствующих в конкретном модуле. Давайте воспользуемся функцией dir (), чтобы перечислить имена функций и переменных модуля «MathOperation».

Это наши функции и переменные, созданные в нашем модуле «MathOperation».

#создание модуля MathOperation



#модуль обеспечивает функции сложения, вычитания, умножения и деления



#все функции принимают в качестве аргумента два числа



#создание функции добавления



def addition(num1,num2):



return num1+num2



#создание функции вычитания



def subtraction(num1,num2):



return num1-num2



#создание функции умножения



def multiplication(num1,num2):



return num1*num2



#создание функции деления



def division(num1,num2):



return num1/num2



#создание переменных 



num1 = 10 num2 = 20 



#создание списка учащихся 



student = ['AndreyEx','Max','Alex','Term'] 



#создание студенческого словаря 



std_dict = {'name':'AndreyEx','age':40,'email':'andr@andreyex.ru'}


 

Теперь давайте вызовем функцию dir () в нашем скрипте Python.

#импорт модуля



import MathOperation



#использование функции dir()



print(dir(MathOperation))


 

Вывод

Хотя Python предоставляет множество встроенных модулей и функций для выполнения некоторых конкретных задач, мы также можем создавать наши собственные модули Python. Модуль Python содержит функции и переменные. Модули Python сохраняются с расширением .py. В этой статье объясняется создание ваших собственных модулей Python с помощью простых примеров.



2020-11-02T12:00:17
Python

Функция Python map ()

map() — это встроенная функция в Python, которая применяет функцию ко всем элементам в данной итерации. Это позволяет писать простой и чистый код без использования циклов.

Функция Python map()

Функция map() принимает следующий вид:

map(function, iterable, ...)

Он принимает два обязательных аргумента:

  • function — функция, которая вызывается для каждого элемента iterable .
  • iterable — один или несколько объектов, поддерживающих итерацию. Большинство встроенных объектов в Python, таких как списки, словари и кортежи, являются повторяемыми.

В Python 3 map() возвращает объект карты с размером, равным переданному итерируемому объекту. В python 2 функция возвращает список.

Давайте рассмотрим пример, чтобы лучше объяснить, как работает функция map() . Допустим, у нас есть список строк, и мы хотели бы преобразовать каждый элемент в списке в верхний регистр.

Один из способов сделать это — использовать традиционный цикл for :

directions = ["north", "east", "south", "west"]
directions_upper = []

for direction in directions:
    d = direction.upper()
    directions_upper.append(d)

print(directions_upper)

['NORTH', 'EAST', 'SOUTH', 'WEST']

С функцией map() код будет намного проще и гибче.

def to_upper_case(s):
    return s.upper()

directions = ["north", "east", "south", "west"]

directions_upper = map(to_upper_case, directions)

print(list(directions_upper))

Мы используем конструктор list() для преобразования возвращенного объекта карты в список :

['NORTH', 'EAST', 'SOUTH', 'WEST']

Если функция обратного вызова проста, более питоническим способом является использование лямбда-функции:

directions = ["north", "east", "south", "west"]

directions_upper = map(lambda s: s.upper(), directions)

print(list(directions_upper))

Лямбда-функция — это небольшая анонимная функция.

Вот еще один пример, показывающий, как создать список квадратных чисел от 1 до 10:

squares = map(lambda n: n*n , range(1, 11))
print(list(squares))

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

Функция range() генерирует последовательность целых чисел.

Использование map() с несколькими итерациями

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

В следующем примере показано, как выполнить поэлементное умножение двух списков:

def multiply(x, y):
  return x * y

a = [1, 4, 6]
b = [2, 3, 5]

result = map(multiply, a, b)

print(list(result))

[2, 12, 30]

Тот же код, но с использованием лямбда-функции, будет выглядеть так:

a = [1, 4, 6]
b = [2, 3, 5]

result = map(lambda x, y: x*y, a, b)

print(list(result))

Когда предоставляется несколько итераций, размер возвращаемого объекта равен самому короткому итерируемому.

Давайте посмотрим на пример, когда итерируемые объекты имеют разную длину:

a = [1, 4, 6]
b = [2, 3, 5, 7, 8]

result = map(lambda x, y: x*y, a, b)

print(list(result))

Лишние элементы (7 и 8) игнорируются:

[2, 12, 30]

Выводы

Функция Python map() принимает итерируемый объект вместе с функцией и применяет эту функцию к каждому элементу в итерируемом объекте.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-10-18T16:23:42
Python