我在 Windows 上使用 Python,我希望脚本的一部分将文件从某个目录(我知道其路径)复制到桌面。
我用的是这个:
shutil.copy(txtName, '%HOMEPATH%/desktop')
而
txtName
是txt文件的名称(带有完整路径)。
我收到错误:
IOError: [Errno 2] No such file or directory: '%HOMEPATH%/DESKTOP'
有什么帮助吗?
我希望脚本可以在任何计算机上运行。
在 Unix 或 Linux 上:
import os
desktop = os.path.join(os.path.join(os.path.expanduser('~')), 'Desktop')
在 Windows 上:
import os
desktop = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop')
并添加到您的命令中:
shutil.copy(txtName, desktop)
这适用于 Windows 和 Linux:
import os
desktop = os.path.expanduser("~/Desktop")
# the above is valid on Windows (after 7) but if you want it in os normalized form:
desktop = os.path.normpath(os.path.expanduser("~/Desktop"))
您可以使用
os.environ["HOMEPATH"]
来获取路径。现在它实际上是在尝试找到 %HOMEPATH%/Desktop
而不替换实际路径。
也许类似:
shutil.copy(txtName, os.path.join(os.environ["HOMEPATH"], "Desktop"))
对于 3.5+,您可以使用 pathlib:
import pathlib
desktop = pathlib.Path.home() / 'Desktop'
我还不能发表评论,但是基于使用“桌面”将位置连接到用户路径的解决方案的应用有限,因为桌面可以而且经常被重新映射到非系统驱动器。 要获取真实位置,应使用 Windows 注册表...或通过 ctypes 的特殊功能,如 https://stackoverflow.com/a/626927/7273599
所有这些答案本质上都是错误的:它们只适用于英语课程。
您应该检查 XDG 目录,而不是假设它始终是
'Desktop'
。
这是正确的答案:如何在Python中独立于语言安装(linux)获取用户桌面路径
试试这个:
import os
file1 =os.environ["HOMEPATH"] + "\Desktop\myfile.txt"
只是 @tpearse 接受的答案的附录:
在嵌入式环境中(c++程序调用python环境)
os.path.join(os.environ["HOMEPATH"], "Desktop")
是唯一有效的。好像
os.path.expanduser("~/Desktop")
不会返回嵌入式环境的可用路径(至少在我的环境中没有;但我的设置中可能缺少 Visual Studio 中的某些环境设置)
简单优雅试试这个来访问桌面中的文件:
import os
import pathlib
import pandas as pd
desktop = pathlib.Path.home() / 'Desktop' / "Panda's" / 'data'
print(desktop) #check you path correct ?
data = pd.read_csv(os.path.joinn(desktop),'survey_results_public.csv')
恭喜!
def get_desktop_path():
import platform
if platform.system() == 'Windows':
try:
import winreg
reg_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')
desktop = winreg.QueryValueEx(reg_key, 'Desktop')[0]
winreg.CloseKey(reg_key)
except:
desktop = "None"
else:
from pathlib import Path
desktop = Path.home() / 'Desktop'
if not os.path.exists(desktop):
desktop = os.path.normpath(os.path.expanduser("~/Desktop"))
if not os.path.exists(desktop):
desktop = os.path.normpath(os.path.expanduser("~"))
print(f"архив будет сохранен сюда: {desktop}")
else:
print(f"архив будет сохранен на рабочий стол")
return desktop