python程序在运行打开时不起作用

我使用Windows 7 x64,当我通过Windows打开我的程序 – 运行它不能正常工作。 它明星,但是当我双击它的时候,这些命令不会像他们那样工作。

/run cmd /c start "" "C:\Python27\Scripts\bot.bat" /run cmd /c start python "C:\Python27\Scripts\bot.py" /run python "C:\Python27\Scripts\bot.py" 

我试过这些,都失败了。 只需双击.bat文件或.py工作即可。

bat文件只是调用python文件

 @echo off start "" "C:\Python27\Scripts\bot.py" 

当我打开它的错误 – 运行是

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

list.txt是在脚本文件夹内,当通过双击打开它始终工作。

更新

我打开文件进行阅读使用

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

并再次写:

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

我已经尝试过James解决scheme,但是因为我有很多使用这些方法的方法,所以我会得到很多的工作,因为它不仅仅是查找和replace,而是根据哪种方法来缩进缩进以及列表名称。

与James的答案类似,但使用__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:\Python27\Scripts\bot.py

更新:替代使用sys.argv[0]谢谢你亚历克斯泰勒 )作为“确定你的入口点的目录”的手段,你也可以使用__file__这是Python模块中的“全局”,即“完整路径“到那个模块。 唯一需要注意的是,如果您的“软件包”是压缩文件或其他可导入的压缩文件,这将不起作用。 请参阅: __file__