Привета Через 2 часа прибегая к помощи и поиску я не в состоянии найти или создать простой кусок кода для следующей установки:Перемещение вложенного в другую parentfolder в питоне
3 папки, 2 файла:
/home/folderA/text2.txt
/home/folderB/
/home/folderB/folder1
/home/folderB/text1.txt
Перемещение «Неизвестного» содержимого папки B в папкуA.
Все попытки решить эту проблему либо считаются слишком тривиальными, но и перенаправлены на «поиск позади». или получить половину страницы кода для конкретной установки с различными требованиями, что делает невозможным для моего жалкого pythonskills разработать достаточный (элегантный) результат.
В python У меня есть процедура определения существования папки B, но ее содержимое неизвестно и меняется для меня. В свете полного раскрытия; вот мой XYproblem:
#!/usr/bin/python
from glob import glob
path1 =glob('*')
path2 = glob('*/*/')
print path1
print path2
print len(path2)
a = len(path2)
for i in range(0,a):
print len(path2[i]), path2[i], path2[i][len(path2[i])-2]
print(path2[i][len(path2[i])-2].isdigit())
if path2[i][len(path2[i])-3]==" " and path2[i][len(path2[i])-2].isdigit():
print('yay')
newpath =path2[i][:len(path2[i])-2]+"0"+path2[i][(len(path2[i])-2):]
print(newpath)
import os
print(os.path.isdir(newpath))
if os.path.isdir(newpath): #if it is true, the new folder with the " 0n" already exists
import shutil
newpath0=path2[i]+ '*/'
print(newpath0, "headsup", newpath)
shutil.copy(newpath0,newpath)
#shutil.move(
Но ради тех, кто ищет эффективное, простое решение этой проблемы, пожалуйста, держать его в упрощенном и гипотетический случай «folderX» :)
-Edit -
Поскольку папка A действительно уже существует и имеет ту же (потенциальную) иерархию, что и folderB. Вот почему
shutil.rmtree('folderA')
не является вариантом; folderA должен оставаться неповрежденным.
Итак, по иронии судьбы, временно удалив содержимое папки A, чтобы вставить в него содержимое папки B, по существу, та же проблема, что и я пытаюсь решить.
-edit2- Спасибо за усилия, я продолжаю получать:
SyntaxError: invalid syntax
на
def mv(from_folder, to_folder)
^
Теперь я извинить за мой исключительный уровень retardedness, но я в настоящее время не хватает ясности в понять, как вы предполагали свое решение;
Таким образом, после глядя ДЕФ мв (.. функция я пришел к выводу, что вы могли бы означать, что from_folder следует заменить строку, которая содержит folderB
Так что я попытался 2 варианта:.
- оригинал
- Определение:
stringA='folderA', stringB=folderB
и заменяя from_folder
на stringB
и to_folder
с stringA
в первых трех строках вашего кода.
Оба имеют ту же ошибку.
* Замечание import os и import shutil уже выполнены в цикле active if. Просто чтобы убедиться, что был не вызывает проблем, я также попробовал с данной явной зева и импорта импорта shutil немедленно выше опр ..
код, который я до сих пор есть, следовательно, выглядит следующим образом:
#!/usr/bin/python
from glob import glob
path1 =glob('*')
path2 = glob('*/*/')
#print path1
#print path2
#print len(path2)
a = len(path2)
for i in range(0,a):
#print len(path2[i]), path2[i], path2[i][len(path2[i])-2]
#print(path2[i][len(path2[i])-2].isdigit())
if path2[i][len(path2[i])-3]==" " and path2[i][len(path2[i])-2].isdigit():
#print('yay')
newpath =path2[i][:len(path2[i])-2]+"0"+path2[i][(len(path2[i])-2):]
#print(newpath)
import os
#print(os.path.isdir(newpath))
if os.path.isdir(newpath): #if it is true, the new folder with the " 0n" already exists
import shutil
newpath0=path2[i]+ '*/'
#print(newpath0, "hier", newpath, ' en path2[i] ', path2[i])
#shutil.copy(newpath0,newpath)
#from here chose from_folder = path2[i] and to_folder=newpath
stringb = path2[i]
stringa = newpath
print(stringb,' ', stringa)
print('reached')
def mv(stringb, stringa):
root_src_dir = stringb
print('reached')
root_dst_dir = stringa
for src_dir, dirs, files in os.walk(root_src_dir):
dst_dir = src_dir.replace(root_src_dir, root_dst_dir)
if not os.path.exists(dst_dir):
os.mkdir(dst_dir)
for file_ in files:
src_file = os.path.join(src_dir, file_)
dst_file = os.path.join(dst_dir, file_)
if os.path.exists(dst_file):
os.remove(dst_file)
shutil.move(src_file, dst_dir)
Но он отказывается печатать второй «достиг», или, другими словами, он не определяет
Спасибо за ваш быстрый ответ, это заставило меня понять, что мой вопрос был подотчетен без решения неотъемлемой проблемы. –