Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用os.path.join打开非扩展名文件_Python_File_Python Os - Fatal编程技术网

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
with
entry_points={“console_scripts”:[“pbl=app:main”}
bcs我想通过键入
pbl

src
目录,带
app.py
main
功能

dir\u with_doc
目录with
doc
文件-此文件没有扩展名

在这个
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))
我设法创建了一个稍微不同的解决方案,但我相信您的解决方案也会起作用。谢谢你帮我^^是的,我看到了,那也行。很高兴能帮忙