Python程序在通过运行打开时不起作用



我正在使用Windows 7 x64,当我通过Windows打开程序时 - 运行它无法正常工作。它是明星的,但是当我双击它时,命令无法按照它们的方式工作。

/run cmd /c start "" "C:Python27Scriptsbot.bat"
/run cmd /c start python "C:Python27Scriptsbot.py"
/run python "C:Python27Scriptsbot.py"

我尝试了这些,所有这些都失败了。当简单的双击.bat文件或.py工作。

BAT文件只会调用Python文件

@echo off
start "" "C:Python27Scriptsbot.py"

当我通过Windows打开它时的错误 - 运行是

[Errno 2] No such file or directory: 'list.txt'

list.txt在脚本文件夹中,通过双击打开时,它总是有效的。

更新

我打开文件以读取

g = open("list.txt","r")

再次写:

g = open("list.txt","w")

我已经尝试了詹姆斯解决方案,但它起作用了,但是由于我有很多方法使用这些方法,因此我会得到很多工作,因为它不仅是找到和替换,而且会设想缩进,并且列表的名称更改了,据此。方法。

类似于詹姆斯的答案,但使用__file__宏作为获取当前执行脚本的方式:

import os.path
with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'list.txt'), 'r') as list_file:
    list_data = list_file.read()

问题在于,工作目录设置为您从中双击的位置,但以您提供的方式从命令行启动。为脚本的位置打开命令提示,并从那里启动也可以正常工作,因为文件将在工作目录中。

__file___宏通常被认为是确定Python脚本位置的最佳方法。

您需要在应用程序中执行类似的操作:

import os
import sys
with open(os.path.join(os.path.dirname(sys.argv[0]), "lists.txt"), "r") as f:
    # do something with lists.txt

这消除了假设 lists.txt将在当前目录中或类似的目录中。

注意: sys.argv[0] 应该是要执行程序的"完整绝对路径",并希望在您的系统上进行C:Python27Scriptsbot.py

更新:替代使用sys.argv[0]谢谢Alex Taylor )作为"确定入口点目录"的一种手段,您也可以使用__file__,这是"全局"在Python模块中,是该模块的"完整路径"。这里唯一的警告是,如果您的"软件包"被拉开或以其他方式进口存档,则这将无法使用。请参阅:__file__

相关内容

  • 没有找到相关文章

最新更新