ast*_*eri 3 python windows batch-file relative-path
如果我直接从它所在的目录中执行它,我的Python脚本就可以正常工作.但是如果我退出该目录并尝试从其他地方执行它(不更改任何代码或文件位置),所有相对路径都会中断得到一个FileNotFoundError.
该脚本位于./scripts/bin/my_script.py.有一个名为的目录./scripts/bin/data/.就像我说的那样,只要我从同一个目录执行它就完全可以工作......所以我很困惑.
成功执行(in ./scripts/bin/):python my_script.py
执行失败(in ./scripts/):两者python bin/my_script.py和python ./bin/my_script.py
失败消息:
Traceback (most recent call last):
File "./bin/my_script.py", line 87, in <module>
run()
File "./bin/my_script.py", line 61, in run
load_data()
File "C:\Users\XXXX\Desktop\scripts\bin\tables.py", line 12, in load_data
DATA = read_file("data/my_data.txt")
File "C:\Users\XXXX\Desktop\scripts\bin\fileutil.py", line 5, in read_file
with open(filename, "r") as file:
FileNotFoundError: [Errno 2] No such file or directory: 'data/my_data.txt'
Run Code Online (Sandbox Code Playgroud)
相关的Python代码:
def read_file(filename):
with open(filename, "r") as file:
lines = [line.strip() for line in file]
return [line for line in lines if len(line) == 0 or line[0] != "#"]
def load_data():
global DATA
DATA = read_file("data/my_data.txt")
Run Code Online (Sandbox Code Playgroud)
是的,这是合乎逻辑的.这些文件是相对于您的工作目录的.您可以通过从其他目录运行脚本来更改它.你可以做的是在运行时获取你正在运行的脚本的目录并从中构建.
import os
def read_file(filename):
#get the directory of the current running script. "__file__" is its full path
path, fl = os.path.split(os.path.realpath(__file__))
#use path to create the fully classified path to your data
full_path = os.path.join(path, filename)
with open(full_path, "r") as file:
#etc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2475 次 |
| 最近记录: |