我已经用cx_Freeze
并按行编译了我的python程序
import sys
print(sys.argv[0])
以获取运行我的应用程序的扩展文件的名称。
我希望能够双击名为Foo.bas
的文件,然后我的编译可执行文件将启动,它可以打开文件并读取其内容。所以我想获取扩展路径和文件名,并像这样读取其内容
with open(file, "r") as f:
data = f.read()
# do things with contents
其中文件将是扩展路径和名称
那我该怎么办?
答案 0 :(得分:1)
sys.argv[0]
为您提供了用于运行脚本的命令的第一项,即脚本名称本身。如果双击扩展名与脚本或冻结的应用程序相关联的文件,则该文件的名称将成为命令的第二个参数,可通过sys.argv[1]
获得该文件。例如,请参见sys.argv[1] meaning in 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
,然后选择脚本或可执行文件作为应用程序。 / p>