我正在使用Windows7x64,当我用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解决方案,它成功了,但是由于我有很多方法使用这些方法,我将得到很多工作,因为它不仅仅是查找和替换,它还包含缩进,而且列表的名称也会随着方法的变化而变化。
最佳答案
类似于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。