Как определить, является ли файл нормальным файлом или каталогом с помощью Python

os.fork

Вилка клонирует родительский процесс, который в данном случае является вашим стеком Django. Так как вы просто хотите запустить отдельный скрипт на python, это кажется ненужным раздуванием.

подпроцесс

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

потоки

Потоки - это определенные логические единицы. Они начинаются, когда вызывается их метод run(), и заканчиваются, когда заканчивается выполнение метода run(). Это делает их хорошо подходящими для создания ветви логики, которая будет работать за пределами текущей области. Однако, как вы упомянули, на них распространяется Глобальная блокировка интерпретатора.

мультипроцессинг

Это в основном нити на стероидах. Он имеет преимущества потока, но не подлежит глобальной блокировке интерпретатора и может использовать преимущества многоядерных архитектур. Однако в результате с ними сложнее работать.

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

120
задан Keith Smiley 24 March 2014 в 15:31
поделиться

5 ответов

os.path.isdir () и os.path.isfile () должны дать вам то, что вы хотите. Видеть: http://docs.python.org/library/os.path.html

154
ответ дан 24 November 2019 в 01:39
поделиться
import os

if os.path.isdir(d):
    print "dir"
else:
    print "file"
9
ответ дан 24 November 2019 в 01:39
поделиться

Как уже говорилось в других ответах, os.path.isdir () и os.path.isfile () - это то, что вам нужно. Однако нужно иметь в виду, что это не единственные два случая. Например, используйте os.path.islink () для символических ссылок. Кроме того, все они возвращают False , если файл не существует, поэтому вы, вероятно, захотите проверить с помощью os.path.exists () .

35
ответ дан 24 November 2019 в 01:39
поделиться

попробуйте следующее:

import os.path
if os.path.isdir("path/to/your/file"):
    print "it's a directory"
else:
    print "it's a file"
4
ответ дан 24 November 2019 в 01:39
поделиться

os.path.isdir('string')
os.path.isfile('string')
3
ответ дан 24 November 2019 в 01:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: