我使用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解决方案并且它有效,但由于我有很多方法使用这些,我会得到很多工作,因为它不仅仅是查找和替换,它包含缩进以及列表更改的名称根据哪种方法。
答案 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。