У меня следующая проблема. Я хочу написать скрипт для автоматического создания структуры папок, определенных внутри текста. Однако следующий код создает странные несколько каталогов, где один каталог заканчивается ?
[centos7@localhost table01]$ ls
01_lay 02_model 03_rig 04_texture 05_shading references?
01_lay? 02_model? 03_rig? 04_texture? 05_shading?
Извлечение из txt файла, используемого для создания папок:
.
./03_rig
./03_rig/release
./03_rig/working
./05_shading
./05_shading/release
./05_shading/working
Вот код:
import os
#Global Variables
pathToProject = "/run/media/centos7/Data/Programming/Pipeline/SampleProject"
pathToPipeline = "/run/media/centos7/Data/Programming/Pipeline/Pipeline"
allowedTypes = ["asset_character", "asset_prop", "asset_dmp", "scene", "shot"]
def createFolders(type, name):
if type in allowedTypes:
if type == "asset_character":
pass
elif type == "asset_prop":
pathToCreateInside = os.path.join(pathToProject, "03_assets/prop/"+name)
os.mkdir(pathToCreateInside)
pathToTxt = os.path.join(pathToPipeline, "create_folders/folder_setups/asset_cg.txt")
if os.path.isdir(pathToCreateInside) == True and os.path.isfile(pathToTxt) == True:
makeDirStructure(pathToCreateInside, pathToTxt)
else:
print pathToTxt
print pathToCreateInside
print "Error: Folder or file does not exist "
elif type == "asset_dmp":
pass
elif type == "scene":
pass
elif type == "shot":
pass
else:
print "Only the following foldertypes are accepeted: ", allowedTypes
def makeDirStructure(pathToCreateInside, pathToTxt):
with open(pathToTxt) as f:
next(f)
for path in f:
try:
os.makedirs(os.path.join(pathToCreateInside, path[2:]))
except OSError:
print ("Creation of the directory %s failed" % path)
createFolders("asset_prop","table01")
Обновление:
Текстовый редактор по умолчанию, который поставляется с linux, не отображает пробелы в конце строки, в то время как нано-редактор позволяет мне переходить в своего рода пробелы, подобные позиции (я не использовал Cli редакторы, поэтому я не не знаю, если это особенность, или персонаж действительно существует) ПОЧЕМУ, черт возьми, редактор по умолчанию не показывает эти символы? Это может быть так опасно! Кстати, txt был создан с помощью команды find . -type d > output.txt
, что еще более странно для Linux. Любое объяснение?