python - 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.py
andC:\Users\MyName\Desktop>python3 file.py
来执行脚本并且有同样的错误,我想这并不让我感到惊讶。
我在网上看了很多关于如何解决这个问题的方法,但是我所看到的几乎所有内容都只是重述open(filename, "w+")
了用于创建文本文件(我已经知道)或关于使用 PATH 的内容,我不认为我需要,但不可否认,我不太了解。
总而言之,我一生都无法弄清楚为什么该脚本只能在 VS Code 中运行。
解决方案
这是因为您定义文件路径的方式。
您正在尝试创建文件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("~")
推荐阅读
- css - TailwindCSS:以线性渐变访问父元素的背景
- macos - Nativescript TNS 运行 ios Mac mini (M1):警告:CocoaPods 出现问题
- google-sheets - 突出显示不在百分比范围内的单元格
- typescript - 如何声明 JSON 文件中的空数组类型?
- html - 图片标签的行为类似于 div
- laravel - 作曲家更新错误不符合 psr-4 自动加载标准。跳过
- android - 需要帮助将 wifi 凭据(ssid 和密码)从适用于 Android 的 ionic 应用程序发送到 esp32
- google-apps-script - 应用程序脚本显示文件夹中包含的 ID 和权限
- python - 如果所有列在 Pandas 中都有值,则计算平均值
- r - R - 在带有 ggplot 错误的图表上绘制棒球击球区