从.tx打开.exe

2024-03-28 18:44:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在创建一个脚本,它只需在与脚本相同的目录中打开一个程序。我想要一个名为“的文本文件”目标.txt,基本上脚本会读取目标.txt“并根据其内容打开一个文件。你知道吗

例如。。文本文件将读取“程序.exe“然后打开里面的剧本程序.exe. 我这样做的原因是很容易改变脚本打开的程序,而不必改变里面的内容。你知道吗

我正在为此使用的当前脚本是:

import subprocess    

def openclient():
   with open("target.txt", "rb") as f:
      subprocess.call(f.read())
      print '''Your file is opening'''

它给了我一个错误,说它找不到目标.txt,即使我在同一个目录下。我试过删除.txt文件,但还是一无所获。然而,这段代码以前确实有效;它因为某种奇怪的原因停止了工作。我使用PythonWin编译器而不是IDLE,我不知道这是不是原因。你知道吗


Tags: 文件import程序目录txt脚本内容目标
1条回答
网友
1楼 · 发布于 2024-03-28 18:44:19

有两个可能的问题:

  • target.txt可能以换行结束,这会把subprocess.call()

  • 如果target.txt不在当前目录中,您可以通过解析魔法变量__file__来访问包含当前正在执行的Python文件的目录。你知道吗

    但是,__file__是在脚本加载时设置的,如果在加载脚本和调用openclient()之间更改了当前目录,__file__的值可能是相对于旧的当前目录的。因此,在第一次读入脚本时,必须将__file__保存为绝对路径,然后使用它访问与脚本位于同一目录中的文件。

这段代码对我很有用,target.txt包含字符串date来运行Unix date命令:

#!/usr/bin/env python2.7

import os
import subprocess

def openclient(orig__file__=os.path.abspath(__file__)):
    target = os.path.join(os.path.dirname(orig__file__), 'target.txt')
    with open(target, "rb") as f:
        subprocess.call(f.read().strip())
        print '''Your file is opening'''

if __name__ == '__main__':
    os.chdir('foo')
    openclient()

相关问题 更多 >