在cmd中运行时,Python脚本未创建文本文件

问题描述 投票:0回答:1

我正在尝试创建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.pyC:\Users\MyName\Desktop>python3 file.py执行脚本,并且有相同的错误,我想这并不奇怪。

我已经在网上找到了很多解决方法,但是我所看到的几乎所有内容都是使用open(filename, "w+")重述来创建一个文本文件(我已经知道),或者是关于使用PATH的,我认为我不需要,但是请承认我不是很了解。

总而言之,我一生都无法弄清为什么脚本在VS Code中可以exclusively运行。

python text-files
1个回答
0
投票

这是由于您定义文件路径的方式。

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

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

您应该使用的路径将始终解析为所需目录。例如,如果要在桌面上创建文件:

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

这将始终解析到Windows上用户的Desktop目录。

在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("~")
© www.soinside.com 2019 - 2024. All rights reserved.