【问题标题】:How to make a python code call a pdf file without hardcoding the file location?如何在不硬编码文件位置的情况下让 python 代码调用 pdf 文件?
【发布时间】:2019-09-22 21:39:17
【问题描述】:

我对编程比较陌生,但我在使用 Python 时遇到了一些问题。

作为参考,我创建了一个小 Python 程序,它将加载 pdf 文件,获取相关详细信息,然后将其上传到我公司的费用表格。该程序运行良好,但有一个问题:如果我对位置进行了硬编码,代码只会在 pdf 上运行,如下所示:

receipt='C:\\Users\\\me\\Desktop\\expense app\\united receipt.pdf'

我的目标是把它变成一个 exe 文件,我可以与我的同事共享,并让他们右键单击 pdf 文件并让小宏运行。

问题是:我不知道如何编写程序以使 pdf 不被硬编码。

我已经知道如何把它变成一个 exe 文件并将其放入上下文菜单,但是我不知道如何编写它以便我可以告诉程序传递我刚刚选择的文件。

本质上,我想让代码说

receipt=file_you_just_clicked_on

因为文件传完之后就可以正常使用了,但是我不知道该怎么做。

我已尝试遵循有关此问题的建议:Run Python Script on Selected File

但是要么我完全误解了我应该做什么,要么我把语法弄乱了。

任何帮助将不胜感激!

如果您需要更多上下文,请告诉我,这是我第一次在这里发帖。

【问题讨论】:

  • 您是否可以要求您的同事将 pdf 文件放入 script 所在的同一文件夹中?那么使用os.path 模块就很简单了。
  • @Nf4r 可能不会,他们不会那样做。还有其他想法吗?

标签: python


【解决方案1】:

当一个程序因为与文件类型或对文件类型的操作相关联而运行时,它会在sys.argv 中接收到文件的路径。这也是它获取放置在其上的文件名称的地方。

请原谅我,我不在 Windows 上编写程序,而且自从我将 Windows 机器用于任何严肃的事情已经有几​​十年了。 sys.argv 通常以 0 作为脚本开头,然后 1: 作为参数,但在 Windows 上可能包含 Python 可执行文件的名称,导致参数从 2 开始:

请查看文件关联的工作原理。

【讨论】:

  • 当我运行程序时,sys.argv[1] 作为 python 脚本本身返回,而不是我发送给它的文件。从你上面所说的,这不是应该发生的事情。怎么回事?
猜你喜欢
  • 1970-01-01
  • 2019-05-07
  • 1970-01-01
  • 2012-02-25
  • 2018-11-18
  • 2013-07-16
  • 2018-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多