Python скрипт не создает текстовый файл при запуске в cmd - PullRequest
1 голос
/ 15 марта 2020

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

save_path = 'Desktop'
name_of_file = "examplefile"
completeName = os.path.join(save_path, name_of_file+".txt")        
file1 = open(completeName, "w+")
toFile = '''text'''
file1.write(toFile)
file1.close()

Все работает, как задумано, при запуске в коде Visual Studio, но при запуске в CMD, я получаю ошибку:

  File "file.py", line 101, in <module>
    open(completeName, "w+")
FileNotFoundError: [Errno 2] No such file or directory: 'Desktop\\examplefile.txt'

При запуске в py.exe он просто вылетает.

Я использовал C:\Users\MyName\Desktop>py file.py и C:\Users\MyName\Desktop>python3 file.py для выполнения скрипта и имел ту же ошибку, которая, я думаю, не удивляет меня.

Я много смотрел в Интернете о том, как решить эту проблему, но почти все, что я видел, просто повторяет использование open(filename, "w+") для создания текстового файла (который я уже знаю) или находится в Что касается использования PATH, в котором я не нуждаюсь, но, по общему признанию, я не очень хорошо это понимаю.

Подводя итог, я не могу понять, почему сценарий работает исключительно в VS Code.

1 Ответ

1 голос
/ 15 марта 2020

Это из-за того, как вы определили путь к файлу.

Вы пытаетесь создать файл Desktop\examplefile.txt. Итак, когда вы запускаете ваш скрипт, он ищет каталог Desktop из вашего текущего рабочего каталога (путь, из которого вы запускаете ваш скрипт) и создает там файл examplefile.txt.

Но ошибка, которую вы получаете, означает, что она не может найти каталог Desktop из вашего текущего рабочего каталога. Это потому, что вы запускаете его из C:\Users\MyName\Desktop, а внутри этого каталога нет Desktop.

Вам следует использовать путь, который всегда будет разрешаться в нужный каталог. Например, если вы хотите создать файл на рабочем столе:

save_path = os.path.join(os.environ['USERPROFILE'], "Desktop")

Это всегда будет разрешаться в каталог пользователя Desktop на Windows.

На Windows, USERPROFILE Переменная среды представляет собой путь к домашнему каталогу пользователя.

И если вы ищете кроссплатформенное решение для получения домашнего каталога пользователя, вы можете использовать это:

# Python 3.5+
from pathlib import Path
home_path = str(Path.home())

# Python 2, <3.5
from os import path
home_path = path.expanduser("~")
...