当前位置: 首页 > 面试题库 >

python-查找用户的“下载”文件夹

经佐
2023-03-14
问题内容

我已经发现了[这个问题](http://codingdict.com/questions/161576,建议os.path.expanduser(path)用来获取用户的主目录。

我想通过“下载”文件夹实现相同的目的。我知道[这在C#中是可能的]http://codingdict.com/questions/168125),但是我是Python的新手,也不知道在这里是否也可以做到这一点,最好与平台无关(Windows,Ubuntu)。

我知道我可以做到download_folder = os.path.expanduser("~")+"/Downloads/",但是(至少在Windows中)可以更改默认下载文件夹。


问题答案:

正确定位Windows文件夹在Python中有些繁琐。根据答案覆盖微软的开发技术,比如这一次,他们应该使用Vista中获得已知的文件夹API。Python标准库没有包装此API(尽管从2008年开始有一个问题要求它),但是无论如何,都可以使用ctypes模块来访问它。

调整以上答案以使用文件夹ID进行此处所示的下载,并将其与您现有的Unix代码结合使用,应会产生如下所示的代码:

import os

if os.name == 'nt':
    import ctypes
    from ctypes import windll, wintypes
    from uuid import UUID

    # ctypes GUID copied from MSDN sample code
    class GUID(ctypes.Structure):
        _fields_ = [
            ("Data1", wintypes.DWORD),
            ("Data2", wintypes.WORD),
            ("Data3", wintypes.WORD),
            ("Data4", wintypes.BYTE * 8)
        ]

        def __init__(self, uuidstr):
            uuid = UUID(uuidstr)
            ctypes.Structure.__init__(self)
            self.Data1, self.Data2, self.Data3, \
                self.Data4[0], self.Data4[1], rest = uuid.fields
            for i in range(2, 8):
                self.Data4[i] = rest>>(8-i-1)*8 & 0xff

    SHGetKnownFolderPath = windll.shell32.SHGetKnownFolderPath
    SHGetKnownFolderPath.argtypes = [
        ctypes.POINTER(GUID), wintypes.DWORD,
        wintypes.HANDLE, ctypes.POINTER(ctypes.c_wchar_p)
    ]

    def _get_known_folder_path(uuidstr):
        pathptr = ctypes.c_wchar_p()
        guid = GUID(uuidstr)
        if SHGetKnownFolderPath(ctypes.byref(guid), 0, 0, ctypes.byref(pathptr)):
            raise ctypes.WinError()
        return pathptr.value

    FOLDERID_Download = '{374DE290-123F-4565-9164-39C4925E467B}'

    def get_download_folder():
        return _get_known_folder_path(FOLDERID_Download)
else:
    def get_download_folder():
        home = os.path.expanduser("~")
        return os.path.join(home, "Downloads")

github上提供了一个更完整的模块,用于从Python检索已知文件夹。



 类似资料:
  • 我正在使用Python2.7、mechanize和beautifulsoup,如果有帮助,我可以使用urllib 我打算使用下面的代码来访问第二个表: 我猜class=“fe-form”是错误的,因为它不能工作,但是该表没有其他属性将它与其他表区分开来。所有表都有cellpadding=“0”cellspacing=“0”border=“0”width=“50%”。我想我不能使用find()函数。

  • python 能否只使用 python -m 命令参数 ,加一个文件 https://url.com/1.txt ,将这个文件下载下来? 文件下载

  • 问题内容: 我有一个网络爬虫,可以搜索并下载某些文件,但是当“另存为或打开”对话框提示时如何下载pdf文件。我目前正在使用pythonselenium进行爬网。这是我的代码。 问题答案: 您将需要修改Firefox配置文件的首选项。为了使其不再显示该对话框,您需要设置使用中的配置文件的属性。为此,您可以执行此操作(请注意,这是针对CSV / Excel文件的-我认为您的类型将为“应用程序/ pdf

  • 问题内容: 我正在使用它向用户发送文件 用户下载后我想删除该文件,我该怎么做? 编辑:我的情况是这样的,当用户点击下载按钮时,我的脚本将创建一个临时zip文件,然后用户下载该文件,然后该临时zip文件将被删除。 EDIT2:好的最佳方法似乎是运行一个cron作业,该作业每小时将清理一次临时文件。 EDIT3:我使用来测试了我的脚本,除非用户取消下载,否则它将起作用。如果用户取消下载,则zip文件将

  • 我正在制作一个discord机器人,它从中获取数据。CSV文件,定期更新。为此,我希望我的机器人下载。将CSV文件发送到特定文本频道时。我找到了那个。附件对象不一致。py:https://discordpy.readthedocs.io/en/latest/api.html#discord.Message.attachments 我如何下载其中一个。CSV附件到我的项目,虽然(我正在使用Py魅力)

  • 问题内容: 我想知道是否有一种方法可以使用jQuery找出我链接到网页的PDF的文件大小。 我要这样做,以便将鼠标悬停在下载链接上时,会弹出一个模式框,说明PDF的文件大小。我可以做第二点,我唯一想知道的是如何找出文件大小。我不知道jQuery是否能够做到这一点。如果不是那么太糟糕了,我猜.. 提前加油。 问题答案: 我觉得在客户端做太多事情了,但是我不知道您的应用程序的详细信息,因此假设您必须使