То, что я пытаюсь сделать, это скопировать файл или каталог из 'src' в 'dst', однако, если файл, который копируется, находится в 'dst' местоположении, t хотите, чтобы операция перезаписывала существующий файл. Можно ли это сделать непосредственно с помощью shutil или просто проверить каталог «dst» для «src», и если он существует, предложите пользователю переименовать файл, который они копируют? В принципе, я хочу создать простую систему «управления версиями» с помощью python.Как выполнить команду с использованием команд копирования в python
0
A
ответ
0
Вот что я придумал. Это довольно грубо. Если у кого есть предложения о том, как уменьшить размер кода, дайте мне знать.
import os
import shutil
srcCheck = 'n'
dstCheck = 'n'
dstDirVer = 2
dstFileVer = 2
dirExitVar = False
fileExitVar = False
src = input('Directory or file to be commited: \n')
print('Is this directory or file correct? > ' + src)
srcCheck = input('(y/n) > ')
while srcCheck != 'y':
src = input('Directory or file to be commited: \n')
print('Is this directory or file correct? > ' + src)
srcCheck = input('(y/n) > ')
while dstCheck != 'y':
dst = input('Where to commit: \n')
print('Is this directory or file correct? > ' + dst)
dstCheck = input('(y/n) > ')
srcIsDir = os.path.isdir(src)
dstDirExist = os.path.isdir(dst)
dstFileExist = os.path.isfile(dst)
while dstDirExist == True:
while dirExitVar == False:
try:
dstPrevDir, dstDirVer = dst.rsplit("v",1)
except ValueError:
dst = dst + '_v' + str(dstDirVer)
dirExitVar = True
dstPrevDir, dstDirVer = dst.rsplit("v",1)
dstDirVer = int(dstDirVer) + 1
dst = dstPrevDir + 'v' + str(dstDirVer)
dstDirExist = os.path.isdir(dst)
while dstFileExist == True:
dstPrevFile, dstExt = dst.rsplit(".",1)
while fileExitVar == False:
try:
dstPrevFileRoot, dstFileVer = dstPrevFile.rsplit("v",1)
except ValueError:
dstPrevFile = dstPrevFile + '_v' + str(dstFileVer)
fileExitVar = True
dstPrevFileRoot, dstFileVer = dstPrevFile.rsplit("v",1)
dst = dstPrevFileRoot + 'v' + str(dstFileVer) + '.' + dstExt
dstFileVer = int(dstFileVer) + 1
dstFileExist = os.path.isfile(dst)
if srcIsDir == True:
shutil.copytree(src, dst)
if srcIsDir == False:
shutil.copyfile(src, dst)
Смежные вопросы
- 1. Как выполнить команду удаленного копирования?
- 2. Как выполнить команду копирования Redshift из EC2
- 3. Как выполнить пользовательскую команду копирования в Linux?
- 4. Как выполнить набор команд после sudo с использованием сценария python
- 5. Несколько команд командной строки с использованием команд команд Python
- 6. выполнить команду curl в python
- 7. Как отправить команду резервного копирования или восстановления в окно команд
- 8. Как выполнить команду ssconvert с использованием подпроцесс в Python
- 9. Как выполнить команду root с использованием библиотеки pexpect Python?
- 10. Как выполнить команду с использованием php
- 11. Как выполнить команду в скрипте Python?
- 12. Как выполнить команду UNIX в скрипте Python
- 13. Как выполнить команду оболочки в python?
- 14. пытается выполнить команду git с использованием скрипта python
- 15. Как выполнить строку условных команд, которая включает команду оболочки?
- 16. выполнить команду linux grep из подпроцесса python
- 17. как выполнить несколько команд UNIX из питона
- 18. Как выполнить несколько команд bash из Python?
- 19. Как я выполнить команду комм Linux в Python
- 20. Выполнить команду Судо с паролем
- 21. Выполнить строку как команду
- 22. Как выполнить команду os/shell из python
- 23. Как выполнить команду копирования MSBuild, которая не перезаписывает существующие файлы?
- 24. Как выполнить кучу команд в одном канале с помощью python?
- 25. Как выполнить команду LOAD DATA изнутри python
- 26. Python выполнить сложную команду оболочки
- 27. Как выполнить команду alias mathbb?
- 28. Выполнить сложную команду Grep с Python
- 29. Как выполнить команду оболочки в дочернем процессе в Python?
- 30. Выполнение команд npm с использованием подпроцесса Python
так что файлы имеют то же имя, но различное содержимое? –
Да. Я работаю прямо сейчас, проверяя, существует ли файл/каталог, и поэтому пользователь должен изменить имя. Мне было любопытно, хотя, если бы был хороший способ упростить код, используя shutil, поскольку я использую команды копирования, которые он предоставляет. –
вы можете добавить предопределенный суффикс, который вы позволяете пользователю выбирать для дубликатов файлов в начале, чтобы избежать необходимости спрашивать пользователя каждый раз, когда вы сталкиваетесь с файлом с тем же именем, но также есть небольшая вероятность, что вы все еще можете столкнуться с дублирующими файлами, даже используя это способ. –