2015-06-23 4 views
0

Я пытаюсь создать скрипт, который создает каталог (имя ввода) и делает второй каталог в только что созданной папке ввода.Подкаталог Python с пользовательским вводом

import os 
import sys 


user_input = raw_input("Enter name: ") 
user_input1 = raw_input('Enter case: ') 

path = user_input 
if not os.path.exists(path): 
    os.makedirs(path) 
path = user_input1 
if not os.path.exists(user_input/user_input1): 
    os.makedirs(path) 

Я получаю

if not os.path.exists(user_input/user_input1): 
TypeError: unsupported operand type(s) for /: 'str' and 'str' 

Что я здесь делаю неправильно?

Я попытался сделать это:

if not os.path.exists('/user_input1/user_input'): 

Но что приводит к его созданию двух отдельных каталогов не подкаталоги

+0

Вы сделали средний 'os.path.join (user_input, user_input1)'. То, что вы написали, делит (строку) 'user_input' на' user_input1'. – dhke

ответ

1

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

if not os.path.exists(os.path.join(user_input, user_input1)): 
    os.makedirs(os.path.join(user_input, user_input1)) 

вы должны иметь в виду, что при проверке во второй входной строки, которая является подкаталог, вы передаете os.path.join(user_input, user_input1), как только user_input1 не будет создавать вспомогательную директорию.

+0

Спасибо, что работает! – theButcher

0

os.path.exists() ожидает строку. Используйте вместо этого:

if not os.path.exists(os.path.join(user_input, user_input1): 
    os.makedirs(path) 

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

import os 
import sys 


path1 = raw_input("Enter name: ") 
path2 = raw_input('Enter case: ') 

if not os.path.exists(path1): 
    os.makedirs(path1) 
if not os.path.exists(os.path.join(path1, path2): 
    os.makedirs(path2) 
0

это должно работать:

import os 
import sys 

user_input = raw_input("Enter name: ") 
user_input1 = raw_input('Enter case: ') 

path1 = user_input 
if not os.path.exists(path1): 
    os.makedirs(path1) 
path2 = user_input1 
if not os.path.exists(os.path.join(user_input, user_input1)): 
    os.makedirs(os.path.join(path1, path2)) 
Смежные вопросы