首页 > 解决方案 > Python脚本在cmd中运行时不创建文本文件

问题描述

我正在尝试创建一个 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 Code 中运行时一切正常,但在 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.pyandC:\Users\MyName\Desktop>python3 file.py来执行脚本并且有同样的错误,我想这并不让我感到惊讶。

我在网上看了很多关于如何解决这个问题的方法,但是我所看到的几乎所有内容都只是重述open(filename, "w+")了用于创建文本文件(我已经知道)或关于使用 PATH 的内容,我不认为我需要,但不可否认,我不太了解。

总而言之,我一生都无法弄清楚为什么该脚本只能在 VS Code 中运行。

标签: pythontext-files

解决方案


这是因为您定义文件路径的方式。

您正在尝试创建文件Desktop\examplefile.txt。因此,当您运行脚本时,它会Desktop从您当前的工作目录(运行脚本的路径)中查找目录并在其中创建examplefile.txt文件。

但是您收到的错误意味着它无法Desktop从您当前的工作目录中找到该目录。那是因为您正在从中运行它,C:\Users\MyName\Desktop并且其中没有Desktop目录。

您应该做的是使用始终解析为所需目录的路径。例如,如果你想在桌面上创建一个文件:

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

这将始终解析为DesktopWindows 上的用户目录。

在 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("~")

推荐阅读