Python скрипт, который создает новый файл и возвращает список файлов - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь создать python скрипт с именем script.py с функцией new_directory, который создает новый каталог внутри текущего рабочего каталога, затем создает новый пустой файл внутри нового каталога и возвращает список файлов в этот каталог. В результате я получаю ["script.py"], который выглядит правильно, но дает мне эту ошибку:

RuntimeErrorElement (RuntimeError, Ошибка в строке 5: directory = os.mkdir ("/ home / PythonPrograms") FileExistsError : [Errno 17] Файл существует: '/ home / PythonPrograms')

import os

def new_directory(directory, filename):
  if os.path.isdir(directory) == False:
    directory = os.mkdir("/home/PythonPrograms")

  os.chdir("PythonPrograms")
  with open("script.py", "w") as file:
    pass

  # Return the list of files in the new directory
  return os.listdir("/home/PythonPrograms")

print(new_directory("PythonPrograms", "script.py"))

Как исправить и почему это не так?

Ответы [ 3 ]

0 голосов
/ 17 июня 2020

Я не уверен, почему в вашем коде есть with open("script.py", "w") as file: pass,

, но вот способ:

import os

os.mkdir('.\\Newfolder') # Create a new folder called Newfolder in the current directory
open('.\\Newfolder\\file.txt','w').close() # Create a new file called file.txt into Newfolder
print(os.listdir('.')) # Print out all the files in the current directory
0 голосов
/ 18 июня 2020

Как уже говорили другие, отлаживать без ошибки сложно. При правильных обстоятельствах ваш код будет работать без ошибок. Как предположил @Jack, я подозреваю, что ваш текущий каталог не /home. Это означает, что вы создали каталог с именем PythonPrograms в каталоге /home. os.chdir("PythonPrograms") пытается изменить каталог на <currentDirectory>/PythonPrograms, которого не существует.

Я попытался переработать ваш код (не меняя его полностью) во что-то, что должно работать во всех случаях. Я думаю, урок здесь в том, что работайте с уже имеющимися переменными (например, directory), а не жестко кодируйте их в функции.

import os

def new_directory(directory, filename):

  if not os.path.isdir(directory):
    # Create directory within current directory
    # This is working off the relative path (from your current directory)
    directory = os.mkdir(directory)

  # Create file if does not exist
  # this is a one-liner version of you with...pass statement
  open(os.path.join(directory, filename), 'a').close()

  # Return the list of files in the new directory
  return os.listdir(directory)

print(new_directory("PythonPrograms", "script.py"))

Надеюсь, это поможет.

0 голосов
/ 17 июня 2020

Я предполагаю, что вы получаете ошибку из-за того, что вы не можете переключить каталоги на PythonPrograms? Причина в том, что ваш текущий рабочий каталог python не содержит его. Если вы более явно укажете каталог, в который хотите переключиться, например, os.chdir("/home/PythonPrograms"), то это может сработать для вас.

В идеале вы должны предоставить нам любые трассировки стека или дополнительную информацию об ошибках, хотя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...