【问题标题】:How to find the path of a specific file from another folder如何从另一个文件夹中查找特定文件的路径
【发布时间】:2022-12-08 07:25:39
【问题描述】:

问题定义:
我正在使用 xlwings 从 Excel 运行 python 脚本,并且我有一个在这些脚本中使用的文件。

我曾经有特定于我的计算机的路径(ex--> C:\users\myuser\some_folder\myfile)。

现在我将这些脚本发送给我的同事使用,我希望根据文件在他们机器上的位置自动配置文件的路径。我尝试使用 os 包。

我尝试了这个 post 和这个 post 最后尝试将文件移动到同一位置并使用 os.getcwd() 获取工作目录并与文件名连接以获取路径。

当我单独运行 python 脚本(不是从 Excel)时,这些方法工作正常,但是当我尝试从 Excel 运行时,它不起作用,因为出于某种原因,当从 Excel 运行 python 脚本时,工作目录更改为C:\\ProgramData\\Anaconda3\\ 并且不再看到该文件。此外,这些方法(根据我的理解)使用文件运行目录的路径。

他们只能看到C:\\ProgramData\\Anaconda3\\ 中的文件。
我的第一个想法是尝试使用此 solution 搜索文件夹名称,但问题是我不知道最终用户将把文件夹存储在哪个位置。

我现在想的是找到一种方法来定位(形成此位置C:\\ProgramData\\Anaconda3\\(python 从 Excel 运行的位置))存储文件的文件夹,并从那里轻松获取文件路径。在网上搜索后,我没有找到适合我的案例的解决方案。
那么,有没有办法使用os 或任何其他包来做到这一点?

【问题讨论】:

  • 我认为这不是一个可行的想法。为什么不要求用户将文件放在特定目录中,即与 excel/program 文件相同的目录?
  • 我真的不明白你的问题,但这会有帮助吗? __file__,它包含当前python脚本的绝对路径,print(__file__)
  • @dsal3389 感谢您发表评论。我使用你的建议找到了当前 python 脚本的位置,然后应用到它 os.path.abspath(os.path.dirname(__file__)) + \myfile 并且它起作用了。如果您请将您的评论移至答案部分,以便我接受它作为答案。谢谢。

标签: python excel xlwings


【解决方案1】:

__file__包含执行的python脚本的绝对路径,不受当前工作目录的影响

# example script located at /usr/bin/foo.py
print(__file__)

输出:

/usr/bin/foo.py

【讨论】:

    猜你喜欢
    • 2014-03-13
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多