使用 os.path.join 打开非扩展文件
opening non-extension file with os.path.join
我可能遗漏了一件小事,但不确定如何解决这个问题。
有目录Pic_checker
。在这个目录中我有:
Pic_checker
--setup.py
/src
--app.py
/dir_with_doc
--doc
setup.py
和 entry_points={"console_scripts": ["pbl=app:main"]}
bcs 我想要 运行 只需输入 pbl
src
目录 app.py
具有 main
功能。
dir_with_doc
目录包含 doc
文件 - 此文件没有扩展名。
在这个 main
函数中我有:
with open(
os.path.join(__file__, "../../dir_with_doc/doc"),
encoding="utf-8",
) as f:
Bcs 我想 运行 终端中只有 pbl
命令的脚本,我需要输入绝对路径(我不喜欢这样)或将相对路径输入 app.py 文件,在 os.path.join
函数中使用 __file__
并导航。遗憾的是出现错误:
print(os.path.join(__file__, "../../dir_with_doc/doc"))
# /home/user/Pic_checker/src/app.py/../../dir_with_doc/doc
NotADirectoryError: [Errno 20] Not a directory: /home/user/Pic_checker/src/app.py/../../dir_with_doc/doc
.
我之前尝试打开 os.path.join
东西(在 windows 上使用 configparser.Configparser().read()
)并且它使用的是常规文件,所以我认为问题出在扩展名 (?) 和我的问题上是:
如何使非扩展文件适合它?或者是否有另一种读取非扩展 doc
文件相对于脚本文件的方法?还是我遗漏了一个小细节?
谢谢!
这是要走的路。
with open(
f"{os.path.dirname(os.path.realpath(__file__))}/../dir_with_doc/doc"
)
我认为,要使其正常工作,您应该将 os.path.join
函数生成的路径转换为完整的现有路径,扩展按字面解释的 ..
符号。您可以使用 os.path.realpath
函数。所以试试这个:
with open(
os.path.realpath(os.path.join(__file__, "../../dir_with_doc/doc")),
encoding="utf-8",
) as f:
我可能遗漏了一件小事,但不确定如何解决这个问题。
有目录Pic_checker
。在这个目录中我有:
Pic_checker
--setup.py
/src
--app.py
/dir_with_doc
--doc
setup.py
和 entry_points={"console_scripts": ["pbl=app:main"]}
bcs 我想要 运行 只需输入 pbl
src
目录 app.py
具有 main
功能。
dir_with_doc
目录包含 doc
文件 - 此文件没有扩展名。
在这个 main
函数中我有:
with open(
os.path.join(__file__, "../../dir_with_doc/doc"),
encoding="utf-8",
) as f:
Bcs 我想 运行 终端中只有 pbl
命令的脚本,我需要输入绝对路径(我不喜欢这样)或将相对路径输入 app.py 文件,在 os.path.join
函数中使用 __file__
并导航。遗憾的是出现错误:
print(os.path.join(__file__, "../../dir_with_doc/doc"))
# /home/user/Pic_checker/src/app.py/../../dir_with_doc/doc
NotADirectoryError: [Errno 20] Not a directory: /home/user/Pic_checker/src/app.py/../../dir_with_doc/doc
.
我之前尝试打开 os.path.join
东西(在 windows 上使用 configparser.Configparser().read()
)并且它使用的是常规文件,所以我认为问题出在扩展名 (?) 和我的问题上是:
如何使非扩展文件适合它?或者是否有另一种读取非扩展 doc
文件相对于脚本文件的方法?还是我遗漏了一个小细节?
谢谢!
这是要走的路。
with open(
f"{os.path.dirname(os.path.realpath(__file__))}/../dir_with_doc/doc"
)
我认为,要使其正常工作,您应该将 os.path.join
函数生成的路径转换为完整的现有路径,扩展按字面解释的 ..
符号。您可以使用 os.path.realpath
函数。所以试试这个:
with open(
os.path.realpath(os.path.join(__file__, "../../dir_with_doc/doc")),
encoding="utf-8",
) as f: