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

如何以编程方式确定Dropbox文件夹的位置?

邹丰羽
2023-03-14
问题内容

我有一个脚本,打算由多名用户在多台计算机上运行,​​并且他们各自的主目录中都没有他们的Dropbox文件夹。我讨厌必须在脚本中硬编码路径。我宁愿以编程方式找出路径。

任何建议欢迎。

编辑:我不在脚本中使用Dropbox
API,该脚本只是读取用户之间共享的特定Dropbox文件夹中的文件。我唯一需要的是Dropbox文件夹的路径,因为我当然已经知道Dropbox文件结构内的相对路径。

编辑:如果重要,我正在使用Windows 7。


问题答案:

我在这里找到了答案。设置s等于第二行~\AppData\Roaming\Dropbox\host.db,然后使用base64对其进行解码将给出路径。

def _get_appdata_path():
    import ctypes
    from ctypes import wintypes, windll
    CSIDL_APPDATA = 26
    _SHGetFolderPath = windll.shell32.SHGetFolderPathW
    _SHGetFolderPath.argtypes = [wintypes.HWND,
                                 ctypes.c_int,
                                 wintypes.HANDLE,
                                 wintypes.DWORD,
                                 wintypes.LPCWSTR]
    path_buf = wintypes.create_unicode_buffer(wintypes.MAX_PATH)
    result = _SHGetFolderPath(0, CSIDL_APPDATA, 0, 0, path_buf)
    return path_buf.value

def dropbox_home():
    from platform import system
    import base64
    import os.path
    _system = system()
    if _system in ('Windows', 'cli'):
        host_db_path = os.path.join(_get_appdata_path(),
                                    'Dropbox',
                                    'host.db')
    elif _system in ('Linux', 'Darwin'):
        host_db_path = os.path.expanduser('~'
                                          '/.dropbox'
                                          '/host.db')
    else:
        raise RuntimeError('Unknown system={}'
                           .format(_system))
    if not os.path.exists(host_db_path):
        raise RuntimeError("Config path={} doesn't exists"
                           .format(host_db_path))
    with open(host_db_path, 'r') as f:
        data = f.read().split()

    return base64.b64decode(data[1])


 类似资料:
  • null 目前,我可以转到url并进行一些屏幕刮擦以尝试获得内容列表,但链接Dropbox博客条目中描述的解决方案的优点是不需要刮擦文件,因此它更加可靠和高效。

  • 我是Android系统的新手。我得到了一个应用程序,在其中我列出了所有SD文件和文件夹,包括doc,pdf,xls,jpg等。 如何在Android中以编程方式获取我的SD卡中所有文件夹和文件的文件夹名和文件名? 我正在使用这段代码,但无法获得文件夹名称(根文件夹和子文件夹)。

  • 我正在尝试使用Python 3.4在dropbox中上传文件。我可以成功地将文件上传到dropbox。但我需要知道如何读取Dropbox文件夹中的文件。例如:如果dropbox文件夹中有文本和csv文件,那么我需要使用Python dropbox API v2读取这些文件的内容?

  • 问题内容: 我想确定我的Java程序正在以编程方式运行的主机的操作系统(例如:我希望能够基于我在Windows还是Unix平台上加载不同的属性)。做到100%可靠性的最安全方法是什么? 问题答案: 你可以使用: PS:你可能会发现此代码有用: 它所做的只是打印出Java实现提供的所有属性。通过它,你可以了解可以通过属性了解Java环境的内容。

  • 问题内容: 类似于此问题,但适用于MySQL。 我如何以编程方式确定MySQL中的外键引用(假设InnoDB)?我几乎可以通过以下方式获得它们: …但是可惜,似乎包含某些信息的评论列被截断了,所以我不能依靠它。一定有其他方法… 我对C API调用,SQL语句或其他任何东西都感到满意-我只需要一贯工作的东西。 注意:我也考虑过解析“ SHOW CREATE TABLE MyTableName”语句的

  • 问题内容: 如何以编程方式确定我的机器是x86,x64还是IA64? 问题答案: 在Windows系统上,您可以获得环境变量PROCESSOR_ARCHITECTURE。这是MSDN文章,解释了可以返回的值。