当操作系统打开脚本以打开文件时,如何从python访问文件?

当操作系统打开脚本以打开文件时,如何从python访问文件?,python,python-3.x,Python,Python 3.x,例如,当我打开一个HTML文件时,我将其设置为在Chrome中打开。现在,如果我将给定的python脚本设置为打开给定文件类型的东西,那么如何在脚本中访问该文件?可从何处获取?打开文件时,操作系统启动负责的打开程序,并将要打开的文件作为以下文件传递: 可以通过访问python脚本中的命令行参数。一个简单的例子: import sys print("I'm supposed to open the following file(s):") print('\n'.join(sys.argv[1:]

例如,当我打开一个HTML文件时,我将其设置为在Chrome中打开。现在,如果我将给定的python脚本设置为打开给定文件类型的东西,那么如何在脚本中访问该文件?可从何处获取?

打开文件时,操作系统启动负责的打开程序,并将要打开的文件作为以下文件传递:

可以通过访问python脚本中的命令行参数。一个简单的例子:

import sys

print("I'm supposed to open the following file(s):")
print('\n'.join(sys.argv[1:]))

为了证明Drawing的观点,在Linux上,您可以“用其他应用程序打开”,并选择python脚本,使其可执行。
sys.argv
将脚本的名称作为参数0提供,然后提供任何其他参数的列表

肌球蛋白

#!/usr/bin/env python
import sys, os
x=os.open('/home/rolf/myopener.output',os.O_RDWR|os.O_CREAT)
xx = os.fdopen(x,'w+')
y=str(sys.argv)
xx.write(y)
xx.close()
myopener.py
打开文件abc.ddd将创建文件
myopener.output
内容:

['/home/rolf/myopener.py', '/home/rolf/abc.ddd']

如果我们调用正在打开的文件
B
,而执行打开操作的脚本名为
A
,您是在问
A
如何访问
B
还是
B
如何访问
A
?A如何访问
B
。(反过来说有意义吗?试着弄清楚什么时候适用)…但是你知道为什么这对谷歌来说有点困难。当访问文件时,你不能让“python脚本成为打开给定文件类型的东西”,它只会返回一个错误。也许将脚本转换为exe可能会起作用。Dawg上面的评论不准确,脚本可以处理这种情况,而不需要.exe'ified?@Aerovistae是的,您可以通过命令
python.exe my_opener_script.py
,将启动脚本并将参数传递给它来设置要打开的特定文件类型。或者在最坏的情况下,您可以创建一个
.bat
脚本来启动python脚本并传递参数。@raw是的,您必须创建一个bat脚本。因此,我的第一句话是正确的,您不能在Windows中指定python脚本作为文件开启器…@KDawG非常确定,如果没有
.bat
,这是可能的,尽管您可能需要手动编辑注册表以放入
python.exe my_script.py“%1”
或类似文件。是的,您甚至可以将其设置为.exe文件。这可能更容易。或者编写一个简单的C++应用程序,将文件打开器的参数传递给Python脚本。
['/home/rolf/myopener.py', '/home/rolf/abc.ddd']