我正在Windows上使用Python,我希望我的脚本可以将某个目录下的文件(我知道它的路径)复制到桌面。
我使用了这段代码:
shutil.copy(txtName, '%HOMEPATH%/desktop')
< p >当txtName
是文本文件的名称(包括完整路径)时。 我遇到了错误:
IOError: [Errno 2] No such file or directory: '%HOMEPATH%/DESKTOP'
需要帮助吗?
我希望这个脚本可以在任何电脑上运行。
我正在Windows上使用Python,我希望我的脚本可以将某个目录下的文件(我知道它的路径)复制到桌面。
我使用了这段代码:
shutil.copy(txtName, '%HOMEPATH%/desktop')
< p >当txtName
是文本文件的名称(包括完整路径)时。 我遇到了错误:
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)
os.path.expanduser("~/Desktop")
。 - dashesyos.path.join()
调用。此外,第一个解决方案也适用于Windows:不需要第二个解决方案。 - Eric O. Lebigot这适用于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"))
'C:\\Users\\user/Desktop'
... 这将适用于Win desktop = os.path.expanduser("~\\Desktop")
。 - user9013730os.path.normpath
。 - dashesy/home/andreymal/Рабочий стол
。 - andreymalos.environ["HOMEPATH"]
获取该路径。当前代码中的路径是字面量,尝试查找 %HOMEPATH%/Desktop
而没有替换实际路径。
也许可以改为:
shutil.copy(txtName, os.path.join(os.environ["HOMEPATH"], "Desktop"))
os.path.expanduser("~/Desktop")
在 Linux 和 Windows 上都可以使用,它的作用是将波浪号(~)扩展成当前用户的主目录路径。 - dashesy对于3.5及以上版本,您可以使用pathlib:
import pathlib
desktop = pathlib.Path.home() / 'Desktop'
我还不能发表评论,但是使用“Desktop”将位置连接到用户路径的解决方案有限,因为“Desktop”可能被重新映射到非系统驱动器。 要获取真实位置需要使用Windows注册表...或者通过ctypes使用特殊函数,如https://dev59.com/qXRB5IYBdhLWcg3wbGtB#626927
试试这个:
import os
file1 =os.environ["HOMEPATH"] + "\Desktop\myfile.txt"
简单而优雅的方法,尝试使用以下代码访问桌面文件:
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')
祝贺您!
这是对 @tpearse 的回答的补充:
在一个嵌入式环境中(C++程序调用Python环境)
os.path.join(os.environ["HOMEPATH"], "Desktop")
是唯一有效的方法。看起来
os.path.expanduser("~/Desktop")
对于嵌入式环境,它不能返回可用的路径(至少在我的环境中不行;但是在我的设置中,Visual Studio中可能缺少一些环境设置)
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