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

时间:2015-05-05 02:46:19

标签: python windows python-2.7 irc mirc

我使用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"

Windows打开时出错 - 运行

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

list.txt在Scripts文件夹中,双击打开时总是有效。

更新

我使用

打开要读取的文件
g = open("list.txt","r")

再次写:

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

我已经尝试过James解决方案并且它有效,但由于我有很多方法使用这些,我会得到很多工作,因为它不仅仅是查找和替换,它包含缩进以及列表更改的名称根据哪种方法。

2 个答案:

答案 0 :(得分:2)

您希望在您的应用程序中执行以下操作:

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

这将删除{em>假设 lists.txt将在当前目录中或类似名称。

注意: sys.argv[0] 应该是"完整的绝对路径"正在执行的程序,并希望C:\Python27\Scripts\bot.py在您的系统上。

更新替代使用sys.argv[0]谢谢Alex Taylor )作为确定入口点目录的方法" 34;你也可以使用__file__这是一个"全球"在Python模块中,这是"完整路径"到那个模块。这里唯一需要注意的是,如果你的"包裹"是压缩的或其他可导入的存档。请参阅:__file__

答案 1 :(得分:2)

与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___宏通常被视为best way of determining a python script location