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