Каталог Argparse не найден

#python #command-line-interface #argparse

#питон #интерфейс командной строки #argparse

Вопрос:

Код должен создать каталог и переместить файл в него, и он отлично работает, когда не используется Argparse. С помощью Argparse я застрял в точке, где каталог не найден

Ошибка CLI:

 Traceback (most recent call last):  File "/Users/d/PycharmProjects/fileorganizer/addfile.py", line 20, in lt;modulegt;  main()  File "/Users/d/PycharmProjects/fileorganizer/addfile.py", line 17, in main  crea_cartella("docs", directory)  File "/Users/d/PycharmProjects/fileorganizer/addfile.py", line 8, in crea_cartella  os.mkdir(newdirectory) FileNotFoundError: [Errno 2] No such file or directory: '../fileorganizer/files/docs'  

Код:

 import os import argparse  def crea_cartella(nomeCartella, directory):  newDirectory = os.path.join(directory, nomeCartella)  os.mkdir(newDirectory)  def main():  parser = argparse.ArgumentParser(description="sposta un file nella cartella di destinazione")  parser.add_argument("--nomeFile", type=str, help="nome file compreso di estensione")   args = parser.parse_args()   directory = "../fileorganizer/files"  crea_cartella("docs", directory)  if __name__ == '__main__':  main()  

Комментарии:

1. Вы вообще не используете args (свои проанализированные аргументы). Ваш путь жестко закодирован "../fileorganizer/files" . Есть ли у вас каталог, называемый fileorganizer одним каталогом, над вашим текущим рабочим каталогом? Предположительно, вы хотите перейти по другому пути в качестве аргумента --nomeFile ?

2. —nomeFile-это имя файла, который я хочу переместить в другой каталог

3. crea_cartella() должен создать папку внутри /файловый органайзер/файлы

4. Но ты им не пользуешься. Вам нужно args.nomeFile где-то использовать. И я не вижу здесь ничего, что пытается переместить файл, только код, который пытается создать каталог. Опять же, у вас уже есть каталог, называемый fileorganizer/ одним каталогом над вашим рабочим каталогом?

5. да, у меня есть каталог выше. На данный момент мне не нужно использовать args.nomeFile, потому что я не могу создать новый каталог