我正在尝试创建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.py
和C:\Users\MyName\Desktop>python3 file.py
执行脚本,并且有相同的错误,我想这并不奇怪。
我已经在网上找到了很多解决方法,但是我所看到的几乎所有内容都是使用open(filename, "w+")
重述来创建一个文本文件(我已经知道),或者是关于使用PATH的,我认为我不需要,但是请承认我不是很了解。
总而言之,我一生都无法弄清为什么脚本在VS Code中可以exclusively运行。
这是由于您定义文件路径的方式。
您正在尝试创建文件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("~")