Проблемы с созданием каталога - PullRequest
0 голосов
/ 24 апреля 2018

решаемые

Благодаря @James, эта проблема была полностью решена!

Решение Создание конкретной функции для создания каталогов, показано ниже:

# SETTINGS.PY
pathNAME = '../Location'
PathName2 = pathNAME + '/Location2'
# Define Functions
def make_dir(directoryName):
    if os.path.exists(directoryName):
        if os.path.isdir(directoryName):
            return False
    os.mkdir(directoryName)
    print(directoryName)
    return True

А потом в основном сценарии

import settings
settings.make_dir(settings.pathNAME)
settings.make_dir(settings.pathName2)

Вот как ты это делаешь! Спасибо всем, кто пытался помочь! И еще спасибо @James !!

Оригинальный пост


ВИДЕО

Видео, показывающее весь мой код, и проблема

Описание

Обычно я пытаюсь создать папки для своего проекта, если они не существуют, однако, когда я запускаю файл .py, который создает папки, он создает только две из них, а затем утверждает, что все файлы уже существуют. , Хотя в проводнике файлов их нет (они также не существуют в терминале, когда я делаю ls). Я попытался переместить переменные в один и тот же файл, и я попытался избавиться от операторов if, я также попытался выполнить os.mkdir() и установить для existOk значение true. Я никогда не получаю никаких ошибок

Консольные выходы

Первый запуск (папок не существует)

True  # Main Directory: It thinks the base directory already exists
False # Logs Directory: It knows that the other directories do not exist
False # Users Directory: ^
False # Inventory Directory: ^^
False # Stats Directory: ^^^
../FrozenDesert # It Created The Base Directory
../FrozenDesert/Users # It Created The Users Directory

Второй запуск (пользователи и основной каталог существуют)

True  # Main Directory: Knows it exists
True  # Logs Directory: Thinks it exists
True  # Users Directory: Knows it exists
True  # Inventory Directory: Thinks it exists
True  # Stats Directory: Thinks it exists
      # No Directories were created

Код

Каталог входа (не имеет значения)

#Imports
import time
import os
import settings


#  Request User Input
print('Welcome To The Frozen Desert. Would You Like To Register Or Sign In?')
print(" ")

while True:
    # Store User Input
    identity = raw_input("Login [L] / Register [R]: ")

    # Checks To See If The Answer Is Appropriate
    if identity.lower() not in ('l', 'r'):
        continue
    print(" ")
    break

#TODO: Make Te Login & Registration Functions Work

# Begins User Login
if identity.lower() == "l":
    print("Opening Login Pane")
    time.sleep(1)
    # Clears Screen
    i = 0
    while i <= 50:
        print(" ")
        i += 1

#Begins User Registration
if identity.lower() == "r":
    print("Opening Registration Pane")
    # Clears Screen
    i = 0
    time.sleep(1)
    while i <= 50:
        print(" ")
        i += 1

Каталог настроек (переменные)

# Imports
import os


# Define Locations
pathBase = '../FrozenDesert'
pathUsers = pathBase + '/Users'
pathInventory = pathUsers + '/Inventory'
pathStats = pathUsers + '/Stats'
pathLogs = pathBase + '/Logs'
directoryMain = os.path.dirname(pathBase)
directoryUsers = os.path.dirname(pathUsers)
directoryUserStats = os.path.dirname(pathStats)
directoryUserInventory = os.path.dirname(pathInventory)
directoryLogs = os.path.dirname(pathLogs)

Управление запуском (создание каталогов и прочего)

# Imports
import os
import settings

# Create Directories
print(os.path.isdir(settings.directoryMain))
print(os.path.isdir(settings.directoryLogs))
print(os.path.isdir(settings.directoryUsers))
print(os.path.isdir(settings.directoryUserInventory))
print(os.path.isdir(settings.directoryUserStats))

# TODO: Make Evrything Below Work
# Main Directory
if not os.path.isdir(settings.directoryMain):
    print(settings.directoryMain)
    os.makedirs(settings.directoryMain)

# Users Directory
if not os.path.isdir(settings.directoryUsers):
    print(settings.directoryUsers)
    os.makedirs(settings.directoryUsers)

# Logs Directory
if not os.path.exists(settings.directoryLogs):
    print(settings.directoryLogs)
    os.makedirs(settings.directoryLogs)

# User-Stats Directory
if not os.path.isdir(settings.directoryUserStats):
    print(settings.directoryUserStats)
    os.makedirs(settings.directoryUserStats)

# User-Inventory Directory
if not os.path.isdir(settings.directoryUserInventory):
    print(settings.directoryUserInventory)
    os.makedirs(settings.directoryUserInventory)

Ответы [ 2 ]

0 голосов
/ 24 апреля 2018

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

import os

def make_new_dir(d):
    if os.path.exists(d):
        if os.path.isdir(d):
            return False
    os.path.mkdir(d)
    return True
0 голосов
/ 24 апреля 2018

В прошлом мне больше везло с

if not os.path.exists(dir):
    os.mkdir(dir)

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

base_path = os.path.dirname(os.path.realpath(__file__))

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...