【问题标题】:Running external program through python terminal通过python终端运行外部程序
【发布时间】:2012-11-14 23:53:38
【问题描述】:

我尝试运行一个程序(带有 tcl 文件的词干分析器)来读取一个 txt 文件并将结果保存到另一个 txt 文件中。当我通过 dos-windows 终端运行命令时,它工作正常,但是当我通过 python 终端使用os.system() 运行它时,它返回1 值并且没有任何反应。 代码如下:

>>>import os
>>>os.system('C:\Python27\Lib\site-packages\tclsh.exe -encoding utf-8     C:\Python27\Lib\site-packages\GreekStemmer.tcl in.txt out.txt')
>>>1

我猜'1'表示命令没有成功执行??当我在 dos-terminal 中运行它时,它会创建带有结果的 out.txt 文件。但这里不是..

【问题讨论】:

  • 您需要在带有非转义反斜杠的字符串上添加一个 'r' 前缀,就像您尝试传递给 os.system() 的参数一样。

标签: python operating-system system external execute


【解决方案1】:

在我的机器上,以下内容不起作用,因为反斜杠没有被解释。它们表示特殊字符。

import os
os.system('C:\bin\Tcl\bin\tclsh.exe')

你可以在字符串前加一个r

import os
os.system(r'C:\bin\Tcl\bin\tclsh.exe')

或使用双反斜杠

import os
os.system('C:\\bin\\Tcl\\bin\\tclsh.exe')

【讨论】:

    【解决方案2】:

    in.txt 是否在您运行 Python 脚本的同一目录中?您可能会误解当前工作目录来自函数调用的位置。如果没有,请给出更具体的路径,而不是 in.txt

    另外,python 中有一个subprocess 模块用于外部可执行调用。

    【讨论】:

    • in.txt 位于同一目录中,我还尝试提供 in.txt 的完整路径。子进程返回错误
    • 只是确认一下,在调用 python 脚本之前你所在的目录,还是你的 .tcl 文件所在的目录?因为它必须是前者
    • 所有文件和可执行文件都在同一个目录中.. :(
    猜你喜欢
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多