python - 具有关联扩展名的 Python 可执行运行文件
问题描述
我已经cx_Freeze
用这些行编译了我的python程序
import sys
print(sys.argv[0])
获取运行我的应用程序的扩展文件的名称。我希望能够双击一个名为的文件Foo.bas
,然后我编译的可执行文件启动,它可以打开文件并读取其内容。所以我想获取扩展路径和文件名并像这样读取它的内容
with open(file, "r") as f:
data = f.read()
# do things with contents
其中文件将是扩展路径和名称
那我该怎么做呢?
解决方案
sys.argv[0]
为您提供用于运行脚本的命令的第一个条目,即脚本名称本身。如果双击扩展名与脚本或冻结应用程序相关联的文件,则该文件的名称将成为命令的第二个参数,可通过sys.argv[1]
. 参见例如sys.argv[1] 在 script 中的含义。
所以尝试使用以下脚本:
import os
import sys
if len(sys.argv) > 1:
filename = sys.argv[1]
print('Trying with', filename)
if os.path.isfile(filename):
with open(filename, 'r') as f:
data = f.read()
# do things with contents
else:
print('No arguments provided.')
input('Press Enter to end')
这既可以作为解冻的脚本,也可以作为使用cx_Freeze
. 在 Windows 上,您可以将文件拖放Foo.bas
到脚本或可执行文件的图标上,或右键单击Foo.bas
,选择Open with
并选择您的脚本或可执行文件作为应用程序。
推荐阅读
- for-loop - “LpVariable”对象不支持索引
- git - 如何从 git 存储库中删除所有无更改提交?
- excel - Excel - 宏 - 如何为工作簿中的所有工作表定义事件处理方法
- javascript - 一个字段的变化反映在其他具有相同键的 Vuejs 多维表单中
- postgresql - 在 Postgres 中使用 WITH RECURSIVE 时,WHERE 子句中不允许 SELECT MAX 子查询
- python - 如何在不覆盖现有值的情况下将 JSON 写入文件?我想扩展一个列表
- java - 递归二进制搜索列表:“不是语句”?如何?
- list - 如何在机器人框架中将全局变量或套件变量作为列表?
- python - 使用 Pandas 将两个字符串行合并为一个
- reactjs - 我想在我的项目中实现材料 ui 轮播