Python 使用os.path.join打开非扩展名文件
我可能遗漏了一件小事,但不确定如何解决这个问题 有一个目录Python 使用os.path.join打开非扩展名文件,python,file,python-os,Python,File,Python Os,我可能遗漏了一件小事,但不确定如何解决这个问题 有一个目录picu checker。在此目录中,我有: Pic_checker --setup.py /src --app.py /dir_with_doc --doc setup.pywithentry_points={“console_scripts”:[“pbl=app:main”}bcs我想通过键入pbl src目录,带app.py和main功能 dir\u with_doc目录withdoc文件-此文件没有扩
picu checker
。在此目录中,我有:
Pic_checker
--setup.py
/src
--app.py
/dir_with_doc
--doc
setup.py
withentry_points={“console_scripts”:[“pbl=app:main”}
bcs我想通过键入pbl
src
目录,带app.py
和main
功能
dir\u with_doc
目录withdoc
文件-此文件没有扩展名
在这个main
功能中,我有:
with open(
os.path.join(__file__, "../../dir_with_doc/doc"),
encoding="utf-8",
) as f:
Bcs我只想在终端中使用pbl
命令运行脚本,我需要在os.path.join
函数中放置一个默认路径(我不喜欢这样)或将app.py文件的相对路径放置在\uuuuuuu文件中并导航。令人遗憾的是,出现了以下错误:
print(os.path.join(__file__, "../../dir_with_doc/doc"))
# /home/user/Pic_checker/src/app.py/../../dir_with_doc/doc
NotADirectoryError:[Errno 20]不是目录:/home/user/Pic\u checker/src/app.py/../dir\u with\u 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
函数生成的路径转换为一个完整的现有路径,扩展。
符号,而不是按字面解释。您可以使用该函数。所以试试这个:
with open(
os.path.realpath(os.path.join(__file__, "../../dir_with_doc/doc")),
encoding="utf-8",
) as f:
问题在于open
函数不在os.path.join
中,我想在os.path.join()中使用app.py
部分之前,您需要将其从\uuuuu文件中删除
@Aelius你到底是什么意思?os.path.join
函数只是一个智能字符串操纵器函数:它不会检查传递给它的字符串是否真的存在,你可以尝试一个完全虚构的路径,你可以看到该函数将正常工作,没有错误。你应该遵循@jasonharper的建议。也许您可以尝试对os.path.join
函数与glob
模块生成的内容进行路径扩展。类似于glob.glob(os.path.join(your_path))
我设法创建了一个稍微不同的解决方案,但我相信您的解决方案也会起作用。谢谢你帮我^^是的,我看到了,那也行。很高兴能帮忙